使用gdb进行代码调试

1 前提条件

使用g++编译代码时,增加参数-g,生成调试信息。只有如此,才能对代码进行调试。

2 查看代码

  1) 跳到指定行

        使用list + 行号,查看指定行号附近的代码

       list + 文件名:行号, 查看指定文件指定行附近的代码

  2) 查看指定函数

  3) 查看函数定义信息

2 打断点

  1) 普通断点

     b + linenum,在指定行处打断点;

  2) 条件断点

     使用break if命令,如下所示: 

  (gdb) break line-or-function if expr 
  例如:break 46 if testsize==100

  3) 取消断点

        使用clear命令可以删除指定行处的断点。比如: clear 10,表示删除当前代码文件第10行处的代码。

3 开始调试

  使用start命令开始调试,如果

4 单步调试

   使用命令n (next),逐行调试代码。

5  跳入函数内

   使用命令step,一次执行一行,遇到函数会进入

6  运行到下一个断点

    使用cont命令,即continue的缩写

7 运行代码

使用命令r,直接执行代码不调试

8 退出gdb调试状态

使用命令quit,退出调试状态

——————————————————

附加到进程调试  

gdb <program> <PID> 。如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gd 

b会自动attach上去,并调试他。program应该在 PATH环境变量中搜索得到。 

10 附加命令行参数的调试

执行gdb <program>后,调用set args命令,可以输入命令行参数。比如,

  gdb ./gdbTest

  set args 1000

  start;

则1000作为命令行参数,被传递给了应用程序gdbTest,作为调试时的输入参数


11 查看调用堆栈

    使用命令backtrace,查看调用堆栈


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值