gdb使用

gdb 的使用是直接输入 gdb 命令即可。

gdb命令大全

gdb list命令

命令 描述
list 列出当前行前后共 10 行代码
list n 列出第 n 行前后共 10 行代码
list ,n 列出当前行到第 n 行前后共 10 行代码
list n,m 列出第 n 行到第 m 行前后共 10 行代码
list +n/list -n 列出当前行以上、以下 n 行代码
list file:n 列出文件 file 的第 n 行前后共 10 行代码
list *address 列出指定地址的行代码
list function 列出函数 function 的代码
list file:func 列出文件 file 中 function 的代码

gdb info命令

命令 描述
info line sort.cpp:12 查看指定行的内存地址
info line sort.cpp:print 查看指定函数的内存地址

gdb disassemble命令

命令 描述
disassemble print 反汇编

gdb break命令

命令 描述
break function 在函数 function 处设置断点
break function(type,…) 在原型为 function(type,…) 的函数设设置断点
break class::function 在类 class 的 function 函数处设置断点
break 在下一个指令处设置断点
break n 在第 n 行设置断点
break -n/break +n 在当前行以上,以下 n 行设置断点
break *address 在指定内存地址的行处设置断点
break file:n 在文件 file 的第 n 行设置断点
break file:function 在文件 file 中的函数 function 处设置断点
break expr if condition 符合条件处中断,可以与上述各种表达式联合使用
info break/info break n 显示所有/第 n 个断点的信息

gdb watch命令

命令 描述
watch expr 当 expr 的值发生变化时,程序暂停
rwatch expr 当 expr 被访问时,程序暂停
awatch expr 当 expr 被改变或被访问时,程序暂停
info watch 显示所有 watchpoint

gdb clear命令

命令 描述
clear 清理中断点(只处理 break,不能处理 watch)

不带参数表示清理当前行中断点,带参数执行方式同 break 指令。

gdb delete命令

命令 描述
delete 删除中断点(针对断点号操作),不带参数表示删除所有断点
delete n 删除断点号为 n 的断点
delete n-m 删除断点号从 n 到 m 的所有断点

gdb disable命令

命令 描述
disable 禁用中断点(执行方式同 delete)

gdb enable命令

命令 描述
enable 启用被禁用的断点

gdb continue命令

命令 描述
continue [ignore_n] 同 fp,或简写为 c

无参数表示继续运行到下个中断点,如无中断点则运行到程序结束,带参数 ignore_n 表示继续运行,且忽略随后 ignore_n 次中断点。

gdb next命令

命令 描述
next [n]和step [n] 单步执行,无参数表示一句一句执行,带参数 n 表示执行 n 条语句

二者区别:step 遇到函数调用则进入被调用的函数,而 next 将函数调用当作普通语句,不进入被调用函数,next 可简写为 n,step 可简写为 s。

gdb display命令

命令 描述
display expr 自动显示变量或表达式的值
display/fmt expr 按指定的格式自动显示变量或表达式的值
undisplay num1 … 删除一个或多个自动显示的变量或表达式
delete display num1… 删除一个或多个自动显示的变量或表达式
disable display num1… 禁止自动显示一个或多个变量或表达式
enable display num1… 重新启用被禁止自动显示的一个或多个变量或表达式
info display 显示所有自动显示的变量或表达式

gdb bt命令

命令 描述
bt 查看栈信息

设置变量

命令 描述
set var i =3; 将 i 的值重新赋值为 3。

强制函数调用

命令 描述
call function 调用函数 function,打印函数返回值

gdb threads命令

命令 描述
info thread 查看线程信息
thread n 切换线程

执行shell命令

命令 描述
shell command 临时切换到 shell,执行命令 command