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命令
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命令
设置变量
命令 |
描述 |
set var i =3; |
将 i 的值重新赋值为 3。 |
强制函数调用
命令 |
描述 |
call function |
调用函数 function,打印函数返回值 |
gdb threads命令
命令 |
描述 |
info thread |
查看线程信息 |
thread n |
切换线程 |
执行shell命令
命令 |
描述 |
shell command |
临时切换到 shell,执行命令 command |