在CentOS上调试使用GCC编译的程序,通常使用 GDB(GNU Debugger)。以下是详细的调试步骤和安装方法:
首先,确保你的系统已经安装了GCC。CentOS 7自带的GCC版本较低(4.8.5),如果需要更高的版本,可以使用 devtoolset
来安装。
# 安装devtoolset-8
yum install -y devtoolset-8-*
然后,你可以选择启用特定的shell会话来使用特定版本的GCC:
# 为所有用户改变gcc版本
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
# 启用特殊的shell会话,以使用gcc8
scl enable devtoolset-8 bash
接下来,安装GDB:
# 安装依赖
yum -y install automake flex texinfo ncurses-devel readline-devel gcc-c++
# 下载源码包
wget ftp://ftp.gnu.org/gnu/gdb/gdb-9.2.tar.gz
# 解压并编译
tar zxf gdb-9.2.tar.gz -c /tmp
cd /tmp/gdb-9.2
./autogen.sh
./configure --prefix=/usr/local
make && make install
编译程序:使用GCC编译你的C或C++程序,并生成可执行文件。例如:
gcc -g -o myprogram myprogram.c
这里的 -g
选项告诉GCC在可执行文件中包含调试信息。
启动GDB:使用GDB启动你的程序:
gdb myprogram
调试程序:
设置断点:使用 break
命令设置断点。例如,在 main
函数处设置断点:
break main
运行程序:使用 run
命令运行程序:
run
单步执行:使用 step
命令单步执行程序:
step
查看变量:使用 print
命令查看变量的值:
print variable_name
继续执行:使用 continue
命令继续执行程序:
continue
退出GDB:使用 quit
命令退出GDB。
除了GDB,你还可以使用其他调试工具,如 CGDB,它是一个基于文本界面的GDB前端,提供更丰富的用户界面。
# 安装CGDB
yum -y install gcc gcc-c++ texinfo
git clone https://github.com/cgdb/cgdb.git
cd cgdb
./autogen.sh
./configure --prefix=/usr/local
make && make install
使用CGDB调试程序的基本步骤与GDB类似,但界面更加直观和友好。
希望这些信息能帮助你在CentOS上成功调试使用GCC编译的程序。如果有任何问题,请随时联系。