GDB 使用

1. 运行: gdb program

2. 设置断点: break (line number或者 function)

3.查看 寄存器:info registers 或者 info regster eax或者 print $eax

先写到这里,后面陆续添加。

4. 查看 coredump文件:

:~$ cc -g main.c -o main

、$ ./main
Segmentation fault (core dumped)

 gdb main core.3741 
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".

或者:

$ gdb -c core.3741  main

或者:

$ gcc -c core.3741

Core was generated by `./main'.
Program terminated with signal 11, Segmentation fault.
#0  0x080483c4 in ?? ()
(gdb) file main
Reading symbols from /home/charles/main...done.
(gdb)

5. where-->当前程序走到了那一行

 c ----> 从当前位置继续执行直到另一个breakpoint或者程序结束

next 后面可以跟参数  N,表示重复 next N次

6. 查看调用堆栈(backtrace):

 bt

选择调用堆栈帧:

frame n  (n为调用堆栈frame的编号)

还可以用 up/down 

7.

在GCC编译程序的时候,加上-ggdb3参数,这样,你就可以调试宏了。

另外,你可以使用下述的GDB的宏调试命令 来查看相关的宏。

  • info macro – 你可以查看这个宏在哪些文件里被引用了,以及宏定义是什么样的。
  • macro – 你可以查看宏展开的样子。
8.条件断点

条件断点是语法是:break  [where] if [condition],这种断点真是非常管用。尤其是在一个循环或递归中,或是要监视某个变量。注意,这个设置是在GDB中的,只不过每经过那个断点时GDB会帮你检查一下条件是否满足。

9.命令行参数

有时候,我们需要调试的程序需要有命令行参数,很多朋友都不知道怎么设置调试的程序的命令行参数。其实,有两种方法:

  1. gdb命令行的 –args 参数
  2. gdb环境中 set args命令。
10.gdb的变量

有时候,在调试程序时,我们不单单只是查看运行时的变量,我们还可以直接设置程序中的变量,以模拟一些很难在测试中出现的情况,比较一些出错,或是switch的分支语句。使用set命令可以修改程序中的变量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值