美文网首页
gdb debug 命令

gdb debug 命令

作者: rhc2008 | 来源:发表于2023-05-05 17:46 被阅读0次
GDB DEBUG:
run:r
continue:c
break:b  (b anet.c:455 ;  b 458; b 464;b 466)
tbreadk:tb 命令用于添加一个临时断点
backtrack: bt
frame:f (f 1; f 2; f 3; 这里依次切换至堆栈1,2,3)
info:info (info b 查看加了哪些断点)

enable :enable
disable :(disable 1 : 则使用 disable 断点编号就可以禁用 这个断点,被禁用的断点可以使用 enable断点编号并重新开启,
如果disable和enable命令不加断点编号,则分别表示禁用和启用 所有断点)

delete:del (del 2 ;使用delete编号可以删除某个断点,如果输入delete时不加命令号,则表示删除所有断点)

list :l(l:次输入list命令时会显示断点前后的10行代码,继续输入list命令时 每次都会接着向后显示10行代码,一直到文件结束;
list+命令:可以从当前代码位置向下显示10行代码;list-命令(即list 减号)可以从当前代码位置向上显示10行代码)

print:p(通过print命令可以在调试过程中方便地查看变量的值,也可以修改当前内存中的变量值
p:/o(octal,八进制显示),x(hex,十六进制显示),d(decimal,十进制显示),u(unsigned decimal,无符号十进制显示),
t(binary,二进制显示),f(float,浮点值显示),a(address),i(instruction),
s(string),z(zero padded on the left,十六进制左侧补0显示))

ptype:ptype(列出了变量的类型,而且详细列出了每个成员变量的字段名)

info threads:命令可以调试多线程程序
thread:thread( thread 2 :切换到线程2,线程2前面就被加上了星号)
info args:命令还可以用来查看当前函数的参数值

until:u(u 2774 :让程序运行到指定的行停下)
finish :fi
return:return
在gdb命令行界面直接按下回车键,默认是将最近一条命令重新执 行一遍
next:n(next命令的调试术语叫“单步步过(step over)"),即遇到函数 调用时不进入函数体内部,而是直接跳过
step:s(单步步入(step into)”,顾名思义,就是遇到函数调用时进入函 数内部)
在实际调试时,我们在某个函数中调试一会儿后,不希望再一步步地执行到函数返回处,
而是希望直接执行完当前函数并回到上一层 调用处,这时可以使用finish命令。与finish命令类似的还有return 命令。
return命令用于结束执行当前函数,同时指定该函数的返回值
finish命令用于执行完整的函数体, 然后正常返回到上层调用中;return命令用于立即从函数的当前位置 结束并返回到上层调用中,
也就是说,如果使用了return命令,则在 当前函数还有剩余的代码未执行完毕时,也不会再执行了

jump :j (j 行号或者函数的地址,例如跳过了某个对 象的初始化代码,可能会导致程序崩溃 或其他意外操作,
如果 jump 跳转到的位置没有设置断 点,那么 gdb执行完跳转操作后会继续向下执行)

disassemble:dis(通过查看某段代码的汇编指令去排查 问题,
或者在调试一些不含调试信息的 release 版程序时,只能通过 反汇编代码定位问题
gdb的反汇编格式默认为AT&T格式,可以通过show disassembly-flavor查看当前的反汇编格式。
如果习惯阅读intel汇编格式,则可以 使用set disassembly-flavor intel命令来设置)

set args (set args "999 xx" "hu jj",如果想清除已经设置好的命令行参数,则使用set args不加任何 参数即可)
show args(可以通过show args 查看命令行参数是否设置成功)

watch:watch( 可以用来监视一个变量或者一段内存, 当这个变量或者该内存处的值发生变化时,gdb就会中断
int i ;char *p;char buff[128];
watch i;watch p;watch *p;
watch buff(监视一个数组或内存区间)
需要注意的是:当设置的观察点是一个局部变量时,局部变量失效后,观察点也会失效。
)

display:display(display 命令用于监视变量或者内存的值,每次 gdb 中断,都会 自动输出这些被监视变量或内存的值
display 变量名/内存地址/寄存器名
用info display查看当前已经监视了哪些值
使用 delete display清除全部被监视的变量
使用delete display 编号移 除对指定变量的监视
)

dir :dir(
gcc/g++编译出来的可执行程序并不包含完整的源码,
-g 只是加 了一个可执行程序与源码之间的位置映射关系,我们可以通过dir命令 重新定位这种关系
)

# redis-6.0.3b
wget http://download.redis.io/releases/redis-6.0.3.tar.gz
# apt-get -y install lsof

相关文章

  • gdb debug 命令

  • GDB调试

    使用GDB调试配置环境参数: Attach进程: Debug GDB常用方法(1)常用的命令,以拍照为例拍照函数在...

  • debug openjdk8u

    用GDB命令行debug 因为图形化的debug工具配置容易错,我曾反复实验eclipse CDT,但出错需要大量...

  • 零散的笔记

    系统 gdb gdb跟踪zlib库 编译debug版本 链到编译的库 gdb -derictory 指定目录 gd...

  • VsCode 执行 debug(lldb/gdb) 命令

    在使用其它 IDE 调试的时候,有时候仅仅使用 IDE 提供的调试按钮不能满足我们的需求,这时候我们会直接在 ID...

  • GDB 与 LLDB 命令对照表,非常棒

    GDB与LLDB命令对照表 GDB 与 LLDB 命令对照表1GDB 与 LLDB 命令对照表2 设置观察点 观察...

  • GDB使用小结

    基本操作 |命令|说明||-|-|-||gdb exceFile|不带命令行参数||gdb -args execF...

  • MacOS Gdb Debug

    最近又开始了我的Go语言开发之路,开发过程中想使用Gdb调试代码,但始终因为各种报错而导致Gdb调试不了,今天晚上...

  • gdb调试基本方法

    gdb调试基本方法 gdb调试常用命令 在GDB中运行程序 断点(BreakPoint) 观察点(WatchPoi...

  • mac如何安装GDB调试

    背景 笔者在终端想用gdb进行调试, 运行gdb命令时, 突然终端向我抛出一个 gdb: command not...

网友评论

      本文标题:gdb debug 命令

      本文链接:https://www.haomeiwen.com/subject/cirqsdtx.html