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命令可以修改程序中的变量。


你可能感兴趣的:(GDB 使用)