GDB调试C++代码
一、编译时加上 -g调试信息并且去掉优化信息
在Makefile中增加-g调试信息并且去掉优化信息
将之前的Makefile中的文件内容
CC = g++ -std=c++11
OPT_LEVEL := -O2
改为
CC = g++ -std=c++11 -g
OPT_LEVEL :=
代码示例使用之前的TCP Client与Server
通用的Makefile编写与简单的TCP Server
通用的Makefile编写与简单的TCP Client
二、设置启动参数
gdb --args ./Client 127.0.0.1 6000 “hello this is a client”
说明:
–args:设置127.0.0.1 6000 "hello this is a client"为启动参数
三、设置断点
1、命令:l
说明:查看代码
2、命令:b 16
说明:在程序的第16行添加断点
3、命令:info break
说明:查看断点
四、开始调试
1、命令:r
说明:开始运行
2、命令:s
说明:进入函数内部
3、命令:n
说明:下一步
4、命令:finish
说明:跳出函数内部
五、打印变量
1、命令:p m_cliSocket
说明:打印m_cliSocket,十进制格式
2、命令:p/x m_cliSocket
说明:打印m_cliSocket,十六进制格式
3、命令:p/t m_cliSocket
说明:打印m_cliSocket,二进制格式
4、命令:p/o m_cliSocket
说明:打印m_cliSocket,八进制格式
六、退出
1、命令:q
说明:退出GDB调试,根据提示选y则退出
七、其他常用命令
1、在文件中某一函数处设置断点:b TcpClient.cpp:TcpClient::SenMsg
2、直接运行到下一个断点:c
3、查看调用堆栈:bt
4、删除断点:d 5
说明:5为断点序号,如果不加5则提示是否删除所有断点