GDB调试代码

转自https://blog.csdn.net/weixin_43628270/article/details/108179941


一、编译时加上 -g调试信息并且去掉优化信息

在Makefile中增加-g调试信息并且去掉优化信息

二、设置启动参数

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
说明:跳出函数内部
5、命令:c
说明:直接运行到下一个断点

在这里插入图片描述

五、打印变量

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则提示是否删除所有断点

在这里插入图片描述

八、多线程调试

1、命令:info threads
说明:显示当前可调试的所有线程,ID前有“ * ”号的线程是当前被调试的线程。

2、命令: thread ID
说明:调试目标ID指定的线程

3、命令:set scheduler-locking off/on/step
说明:调试多线程程序时,默认除了被调试的线程在执行外,其它线程也在继续执行,但有时我们希望只让被调试的线程运行,因此可以使用这个命令。off表示不锁定任何线程,所有线程可以继续运行,即默认值;on表示只有当前被调试的线程会继续执行;step表示在单步执行的时候,只有当前线程会执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值