您的位置:首页 > 博客中心 > 数据库 >

几个常用的gdb命令

时间:2022-03-14 10:55

show——

show language:查看当前程序的语言环境。

show convenience:查看当前所设置的所有环境变量,不同与environment。

show paths:查看程序的运行路径。


set——

set language <language>:手动设置当前程序的语言环境。

set var <variable>=<value>:通过var指定variable为程序的变量而非GDB的变量,以免产生冲突。

set $<custom_env>=<value>:自定义环境变量,要使用美元符号$。

set print address<on/off>:设置地址是否显示,类似地址的还有许多其它的选项,它们也都可以设置显示开关,当前显示状态可以通过show命令查看。

set args:设置运行时参数。


info——

info frame:查看当前函数的程序语言。

info source:查看当前文件的程序语言。

info registers:查看寄存器的情况。

info line [linespec]:查看源代码在内存中的地址。

info args:显示当前函数的参数名及其值。

info locals:显示当前函数中所有局部变量及其值。

info catch:显示当前函数中的异常处理情况。

info threads:显示线程信息。

info program:查看程序运行状态。


程序运行——

print:查看程序数据,GDB以$1、$2、$3...的方式保存为历史记录,其输出格式是可以指定的,在print后加一个斜线/再加一个格式控制符。如果需要查看一段连续的内存空间的值,使用@符号,左边是第一个内存的地址值,右边是想要查看内存的长度。显示变量时如果发生冲突,可使用::符号。

list:显示源代码,可以通过listsize设置一次显示源代码的行数。

search <re>:用正则表达式搜索源码。

display[/fmt]<expr>:设置程序停住时自动显示的内容,fmt是可选的显示格式,display可通过undisplay取消自动显示,或者是delete删除自动显示,而disable和enable让自动显示失效或恢复而不去删除,当前状态可通过info命令查看。

call <expr>:执行expr表达式,表达式可以是一个函数,以此达到强制调用函数的目的,另一个相似的命令是print命令。

jump <linespec>:指定下一条语句的运行点。

signal <signal>:发送信号给被调试程序,不同于shell的kill命令,后者是被GDB截获的,另外handle命令处理信号,catch命令捕捉程序中发生的事件。

x:即examine,查看内存地址中的值。

directory:指定源文件搜索路径。


断点相关——

break:指定断点位置,还可以指定断点所在的线程。

bt:即backtrace,显示当前栈的信息,具体某一层栈可通过up、down或frame查询。

condition:设置条件断点。

commands:设置断点停止时执行额外的命令。

ignore:设置忽略断点停止的次数。

until:运行程序直到退出循环。

clear:清除指定的断点,类似于delete。

return [expr]:调试断点停在函数中时,强制返回,expr是可选的返回值。


观察点——

watch:设置观察点。


目录——

cd:同shell中的cd,切换目录。

pwd:显示当前目录。


shell——

shell <command>:运行shell中的命令。


本类排行

今日推荐

热门手游