常用gdb命令

1、info line 函数名    //显示函数的地址

2、info frame

3、info argc      info  locals  

4、info breakpoints

5、info watchpoints

6、info threads

7、thread n

8、bt full

9、break n if i==10

10、delete n

11、disable n

12、enable n

13、disassemble func

14、until 跳出循环体

15、finish  跳出正在执行的函数

16、display var

17、watch var   //如果是观察某个局部变量,需先在该函数设置断点

18、info display

19、undisplay n

20、set args xx xx

21、set var i=10

22、set print elements 0 设置最大限制数

23、p array 打印数组的值

24、p  array[10]@6    从下标为10的元素开始连续打印6个元素的值

25、p  *array@6        从下标为0的元素开始连续打印6个元素的值

26、set print array-indexes on  打印数组下标

27 、i files    or     i   proc   mapping 打印进程内存信息

28、whatis   i

29、x  /nfu     u可为b  h   w  g

30、set print pretty on

31、thread apply  all bt

32、set logging on

33、info sharedlibrary  

34、add-symbol-file     xxx.sym    +addr   利用coredump文件加载动态库

35、symbol-file     xxx.sym   调试某个进程

36、gdb   xxx.sym   coredump

37、

i registers

gdb默认显示汇编指令格式是AT&T格式

1、

set disassembly-flavor intel

2、 如果要把断点设置在汇编指令层次函数的开头,要使用如下命令:“b *func”

3、如果要在任意情况下反汇编后面要执行的代码:

(gdb) set disassemble-next-line on

如果要在后面的代码没有源码的情况下才反汇编后面要执行的代码:

(gdb) set disassemble-next-line auto

关闭这个功能:

(gdb) set disassemble-next-line off

 

4、 可以用“disas /m fun”(disas是disassemble命令缩写)命令将函数代码和汇编指令映射起来

如果只想查看某一行所对应的地址范围,可以:

(gdb) i line 13
Line 13 of "foo.c" starts at address 0x4004e9 <main+37> and ends at 0x40050c <main+72>.	

如果只想查看这一条语句对应的汇编代码,可以使用“disassemble [Start],[End]”命令:

(gdb) disassemble 0x4004e9, 0x40050c
Dump of assembler code from 0x4004e9 to 0x40050c:
   0x00000000004004e9 <main+37>:        mov    -0x14(%rbp),%esi
   0x00000000004004ec <main+40>:        mov    -0x18(%rbp),%ecx
   0x00000000004004ef <main+43>:        mov    -0x1c(%rbp),%edx
   0x00000000004004f2 <main+46>:        mov    -0x20(%rbp),%ebx
   0x00000000004004f5 <main+49>:        mov    $0x400618,%eax
   0x00000000004004fa <main+54>:        mov    %esi,%r8d
   0x00000000004004fd <main+57>:        mov    %ebx,%esi
   0x00000000004004ff <main+59>:        mov    %rax,%rdi
   0x0000000000400502 <main+62>:        mov    $0x0,%eax
   0x0000000000400507 <main+67>:        callq  0x4003b8 <printf@plt>
End of assembler dump.

100个gdb小技巧 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值