gdb简单调试命令的整理

本文整理自网络资料。

1、要使用gdb调试文件,必须编译时加上-g选项。譬如:

         gcc-Wall -g hello.c -o hello

2、启动gdb,载入文件的两种方式:

         ①gdb ./hello

         ②gdb; 进入gdb

       (gdb)file ./hello(file是gdb内部加载文件的命令,file后跟文件路径,gdb中的命令支持tab补全、上下翻)

3、显示源代码:

         list命令,简写为l。

         list默认从程序起始位置显示10行代码和其行号,重复使用list时,接着上次显示的位置依次向后显示。

         list-:输出上次调用list的位置的前10行代码。

         list数字n:列出以数字n为中心的前后共10行代码。

         list函数名func:列出函数func前后的10行代码。

         setlistsize:设置一次显示源码的行数。

         showlistsize:显示listsize设置值。

4、查找:

         search/forward-search字符串str:向后查找包含str的行。

         reverse-search字符串str:向前查找包含str的行。

5、设置断点:

         break命令,简写为b。

         break行号n:在n行处设置断点。

         tbreak行号n:设置临时断点,只生效一次。

6、查看断点:

         infobreakpoints/info break:显示断点信息。

7、清除断点:

         clear:清除现在所在位置以后的全部断点。(enable,disable方式忽略)

         clear行号n:清除n行处的断点。

8、运行程序:

         run命令,简写为r,从程序起始位置开始执行。run后面带的参数传递给正在调试的程序。

         continue命令,简写为c,继续运行程序。

         finish命令,运行程序直到退出当前函数,并打印函数返回的堆栈地址和返回值等信息。

         until,简写为u,运行程序直到退出当前循环。

9、程序跟踪:

         watch变量或表达式:当变量或表达式的值改变时,程序暂停。

         rwatch变量或表达式:当变量或表达式被读时,程序暂停。

         awatch 变量或表达式:当变量或表达式的值被写或被读时,程序暂停。

         注:awatch和watch都只能在程序运行中设置,即run之后。

         bt:查看函数堆栈。

10、变量显示:    

         print命令,简写为p。

         print变量或表达式:打印变量或表达式的值。

         print/x (/f,/s) 变量或表达式:以指定的格式显示变量或表达式的值。

         printarr:打印静态数组元素的值。

         printarray@len:从array地址显示len字节长度的数据,用于查看动态数组的值,array是起始地址。

         whatis/ptype:显示变量类型,后者还支持typedef定义的类型。

         display:设置自动显示的变量,当程序暂停或单步跟踪时自动显示这些变量的值。

11、单步执行:

         next,简写为n。继续执行下一条语句,但是不进入子函数。

         nextn:继续执行下面n条语句。

         step:单步执行语句,跟踪到子程序内部,并且打印子程序内部的执行情况。

         stepn:单步执行下面的n条语句。

12、结束与退出:

         kill命令,简写为k:结束当前调试程序。

         quit命令,简写为q,退出gdb。

13、信号:

         handleSIGCHLD:显示对SIGCHLD信号的处理。

         handle5-10:显示对编号5-10号的信号的处理。

         handleSIGCHLD stop/nostop/print/noprint/pass/nopass/ignore/noignore:设置对信号SIGCHLD的处理方式。

         infosignals和info handle:查看信号处理方式集合。

13、其他:

         在gdb中键入两次tab键显示全部gdb命令。

         help命令显示帮助信息。

         直接回车表示重复执行上次的命令(但不完全是,比如l ist 10)。

         make命令:重新编译程序,与执行shell中的make一样。(同样类似的还有pwd、cd等命令,都跟在shell中执行一样)

你可能感兴趣的:(linux)