用GDB调试程序

1、模拟step into,使用step(s)。进入函数体内。

2、模拟step over,使用next(n)。不进入函数体内。

3、模拟step out,使用finish。退出当前函数体。

4、模拟退出循环,使用until(u)。退出当前循环体。

5、模拟下断点,break(b)  function或者linenum或者filename:linenum或者filename:function。

6、模拟删除断点,delete break + 断点号。

7、模拟查看当前断点,info break,能够看到断点号。

8、模拟运行,run(r)。程序刚开始执行时使用。

9、模拟继续运行,continue(c)。继续运行直到下一个断点。

10、打印变量或者表达式

       (1)、print(p) + 变量或者表达式。

       (2)、print(p) + 格式 + 变量或者表达式。

       (3)、如果全局变量和局部变量重复,查看全局变量,使用文件名:全局变量。

       如果是静态数组,直接打印数组名字,就能看到数组中的元素。

       int *array = (int *) malloc (len * sizeof (int));

       如果是动态数组,p *array@len。

11、查看内存

       x/<n/f/u> + 内存地址。

12、自动显示

       (1)、display + 变量或者表达式。

       (2)、display/fmt + 变量或者表达式。

       (3)、display + 内存地址。

       (4)、info display ,查看所有自动显示。

       (5)、delete display + 自动显示号。

13、查看源代码在内存中的地址,info line “行号”,“函数名”,“文件名:行号”,“文件名:函数名”。disassemble + “函数名”或者“文件名:函数名”,反汇编函数。

14、查看所有寄存器的信息,info all-registers。

15、列出当前代码,list(l)。

16、列出当前调用堆栈,backtrace(bt)。

17、set print pretty <on/off> 如果打开printf pretty这个选项,那么当GDB显示结构体时会比较漂亮。

18、print union <on/off> 设置显示结构体时,是否显式其内的联合体数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值