Linux下gdb调试之常用命令说明一

1. gdb调试前的开始

进行 gdb 调试程序的前提是,代码在编译阶段时,编译需带 -g 选项(调试选项),生成带调试信息的可执行程序。 调试程序命令(假如这里生成的目标程序为 test ):gdb test 或 gdb -silent test (其中 -silent 选项也可以用 -quiet 或 -q 代替)。 开始进行 gdb 调试工作,输入命令,如下所示:

gdb test

或输入如下命令:

gdb -q test

在这之后,就正式进入gdb 调试,接下来输入 start 或 run 命令开始运行程序(至此,程序还没有运行)。 当然,如果选择使用 run 命令开始运行程序,则需要设置调试的一些设置,例如设置断点,要监视的变量的添加等等一系列设置工作。

2. gdb调试之常用命令

(1) gdb调试之常用命令 1

调试指令 作 用 (gdb) start 执行被调试的程序,会执行至 main() 主函数的起始位置,即在 main() 函数的第一行语句处停止执行(该行代码尚未执行)。 (gdb) run 或 (gdb) r 自动执行程序,其会自动在第一个断点处暂停执行。 (gdb) file 程序名 装入想要调试的可执行文件。如果启动 GDB 调试器时未指定要调试的目标程序,这种情况下就需要再次手动指定。 (gdb) next 或 (gdb) n 令程序一行代码,一行代码继续向下执行。 (gdb) continue 或 (gdb) c 当程序在某一断点处停止运行后,使用该指令可以继续执行,直至遇到下一个断点或者程序结束。 (gdb) step 或 (gdb) s 执行下一行语句,如果有函数调用则进入到函数内部执行。 (gdb) list 或 (gdb) l 显示源程序代码的内容,包括各行代码所在的行号。 (gdb) list 函数名 列出某个函数的源代码。 (gdb) print 变量 或 (gdb) p 变量=2 输出或者修改指定变量或者表达式的值 (gdb) quit 或 (gdb) q 终止调试

(2) gdb调试之常用命令 2

调试指令 作 用 (gdb) b filename: line_number 或 break filename: line_number 在某个文件的指定行设置断点。 (gdb) b filename: 函数名 或 break filename: 函数名 在某个文件的某个函数的入口处设置断点,即停住。 (gdb) delete 或 (gdb) delete n 删除全部断点 / 删除n号断点。其中,n 为指定断点的编号。 (gdb) clear location 参数 location 通常为某一行代码行号或某个函数名。当 location 参数为某个函数名时,表示删除位于该函数入口处的所有断点。。 (gdb) tbreak filename: 函数名 或 tbreak filename: 函数名 设置临时断点,重启程序后消失 (gdb) backtrace 或 (gdb) bt 查看函数调用的顺序(即函数调用栈信息)。 (gdb) where 或 (gdb) info stack 同 bt 命令,也是可以查看当前线程的调用堆栈。 (gdb) info frame 查看当前函数调用的栈帧信息。 (gdb) info xxx 查看寄存器、断点、观察点和信号等信息,xxx为需要查看的目标。例如,info registers:查看寄存器的值。 info watchpoints:列出当前所设置的所有观察点。 info breakpoints:显示设置的所有断点。
gdb 调试常用命令接《Linux下gdb调试之常用命令说明二》博文说明。
经验分享 程序员 微信小程序 职场和发展