GDB调试C++程序

1 打包

# 1 打包为可执行程序,不加-g
g++ -o appEXE -std=c++11 *.cpp -I. -I/usr/local/include -I/usr/include -L/usr/local/lib -L/home/lib -laaa -lbbb -lccc -L/tmp/lib -lcurl
# 2 打包为可执行程序,加-g是添加了调试信息,方便调试
g++ -g -o appEXE_debug -std=c++11 *.cpp -I. -I/usr/local/include -I/usr/include -L/usr/local/lib -L/home/lib -laaa -lbbb -lccc -L/tmp/lib -lcurl
# 命令解释

这个 g++ 命令是用于编译多个 C++ 源文件并链接它们以生成一个可执行文件的。
g++: 这是 GNU C++ 编译器,用于编译 C++ 代码。
-g: 这个选项告诉编译器生成调试信息,这使得你能够使用像 gdb 这样的调试工具来调试你的程序。
-o appEXE_debug: 这个选项指定了输出文件的名称,即编译和链接后的可执行文件名为 appEXE_debug。
-std=c++11: 这个选项告诉编译器使用 C++11 标准来编译代码。
*.cpp: 这是一个通配符,它告诉编译器编译当前目录下的所有 .cpp 文件。
-I.: 这个选项告诉编译器在当前目录下搜索头文件。. 表示当前目录。
-I/usr/local/include 和 -I/usr/include: 这些选项告诉编译器在 /usr/local/include 和 /usr/include 目录下搜索头文件。
-L/usr/local/lib 和 -L/home/lib: 这些选项告诉链接器在指定的目录下搜索库文件。-L 选项后面跟的是库文件的搜索路径。
-laaa, -lbbb, -lccc: 这些选项告诉链接器链接名为 libaaa.so, libbbb.so, 和 libccc.so 的共享库(在 Unix/Linux 系统中,库文件通常以 lib 开头,并以 .so、.so.x 或 .a 结尾)。注意,-l 选项后面只跟库名(不包括前缀 lib 和后缀 .so 或 .a)。
-lcurl: 告诉链接器链接名为 libcurl.so 的库,这通常是用于处理 HTTP 请求的库。
总之,这个命令的作用是:使用 C++11 标准编译当前目录下的所有 .cpp 文件,并链接到指定的库文件,生成一个名为 appEXE_debug 的可执行文件,同时生成调试信息以便于调试。

2 GDB调试

2.1 命令大全

GDB(GNU Debugger)是Linux下的一款强大的程序调试工具,可以用于查看和修改程序的运行状态。以下是一些常用的GDB调试命令:
1 GDB+ 程序名

2 set args 参数1 参数2

3 run: 开始执行程序,并且如果有断点,会在第一个断点处停下来

4 start:开始执行程序,运行程序

5 next:执行下一行代码,跳过函数调用

6 step:执行下一行代码,进入函数调用

7 continue:继续执行程序,直到遇到断点

8 print:打印变量的值

9 break:在代码的指定行设置断点

10 info break:查看当前设置的所有断点

11 delete breakpoints:删除指定的断点

12 finish:执行当前函数直到返回并打印返回值

13 watch:监视变量的值,一旦变量的值发生变化,程序会停下来

14 list:列出源代码的指定行

15 quit:退出GDB

2.2 案例

1、开始调试程序appEXE_debug: gdb /tmp/appEXE_debug
2、设置输入参数1个: set args /tmp/config.txt
3、设置断点cac.cpp的第10行:break cac.cpp:10
4、运行程序:run
5、打印某个变量:print calNums
6、继续执行:continue
7、执行下一行代码,跳过函数调用:next
8、执行下一行代码,进入函数调用:step
9、退出调试:quit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓码bigdata

如果文章给您带来帮助,感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值