gdb调试

        调试是开发过程中不可或缺的工作,在Linux编程中通常使用gdb来调试C/C++程序。

被调试的程序需要带调试信息

在调试某个程序时,为了能清晰地看到调试的每一行代码、调用的堆栈、变量名、函数名等信息,我们需要在调试程序中加上调试符号信息,即在使用gcc编译程序时需要加上-g 选项。

gcc -g -o hello_server hello_server.c

判断是否带有调试信息。gdb hello_server

 除了不加-g选项,也可以使用 Linux的 strip命令移除某个程序中的调试信息.

strip hello_server

        在实际生成调试程序时,我们一般不仅要加上-g 选项,也被建议关闭编译器程序的优化选项。编译器程序的优化选项一般有 5个级别,即 O0~O4(O0是字母 O加上数字0),其中,O0表示不优化(关闭优化),从O1到O4,优化级别越来越高,O4级别最高。关闭优化的目的是在调试时符号文件显示的调试变量等能与源代码完全对应。

启动gdb调试的方法

        使用gdb调试一个程序一般有三种方法:gdb filename、gdb attach pid、gdb filename corename。

方法一 直接调试目标程序

gdb filename

filename是我们需要启动的调试程序文件名,这种方式会直接使用gdb启动一个程序进行调试,也就是说这个程序还没有启动。

方法二 attach到进程

一个程序已经启动,我们想调试这个程序,但又不想重启这个程序。

#获取chatserver程序的pid,然后attach

ps -ef | grep chateserver

gdb attach pidd

在使用gdb attach附加上目标进程后,调试器会暂停下来,此时我们可以使用continue命令让程序继续运行,若想调试完程序后结束此次调试,且不对当前进程chatserver有任何影响,也就是说想让这个程序继续运行,则可以在 gdb 的命令行界面输入 detach 命令让程序与 gdb 调试器分离。

方法三 调试core文件——定位进程崩溃问题

gdb filename corename

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值