Linux下GDB调试简介

Linux下C/C++调试工具gdb简介

GDB(GNU Debugger)是Linux下的一个调试工具,具体的功能有:
- 设置断点,使得代码在制定行暂停执行;
- 单步调试程序;
- 查看程序中的变量值的变化;
- 动态改变程序的执行环境;
- 分析崩溃程序产生的core文件;

假设我们有源文件hello.c,要使用GDB进行调试,在程序编译时就必须使用-g或者-gdb选项:

gcc -Wall -g hello.c -o hello

-Wall选项使得gcc尽可能产生多的告警信息,
然后使用命令:

gdb hello

接下来就可以进行调试了,调试的窗口:

GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
...     //没有全部复制
Reading symbols from simple_gdb...done.
(gdb)   //这里就可以输入调试命令

常见的调试命令有:

File            //装入想要调试的可执行文件
run             //执行当前被调试的程序
kill            //终止调试程序
step            //执行一行源代码进入函数内部
next            //执行一行源代码不进入函数内部
break           //设置断点后,程序会在这里被挂起
print           //打印变量或者表达式的值
display         //设置自动显示的变量或者表达式
list            //列出可执行文件的源代码的一部分
quit            //退出gdb程序
watch           //监视一个变量的值
backtrace       //回溯跟踪
frame n         //定位到错误行,n为输出结果中的行号
examine         //查看内存地址的值
jump            //使程序跳转执行
signal          //产生信号量
return          //强制函数返回
call            //强制调用函数
make            //使用户不退出gdb就重新生成可执行文件
shell           //使用户不离开gdb就执行Linux命令 

1. 断点调试

使用break设置断点,常见的命令如下:

break [function]    //在指定函数中停住,对于C++的类/重载函数,可以使用class::function或者function(type...)格式指定对应函数
break [linenum]     //在指定行号停住
break +[offset]       //在本行号前面offset停住
break -[offset]
break [filename:linenum]
break [filename:function]
break [*address]      //在运行的内存地址处停住
break       //在下一条指令处停住
break [...] if<condition>     //在条件成立是停住

例如:

break main      //在main函数打断点

未完待续

主要参考自《精通Linux C编程》程国刚 编著

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值