gdb调试

作者: spyder_men | 来源:发表于2019-06-13 12:10 被阅读0次

传入命令行参数

gdb program --args arglist 
(gdb) set args arglist 
(gdb) run arglist 

info常用

info args|locals|line

多进程调试

查看系统默认的follow-fork-mode 和 detach-on-fork:

show follow-fork-mode
show detach-on-fork

设置follow-fork-mode 和 detach-on-fork:

set follow-fork-mode [parent|child]   
set detach-on-fork [on|off]

运行程序,查询正在调试的进程:

显示GDB调试的所有inferior,GDB会为他们分配ID。其中带有*的进程是正在调试的inferior。( GDB将每一个被调试程序的执行状态记录在一个名为inferior的结构中。一般情况下一个inferior对应一个进程,每个不同的inferior有不同的地址空间。inferior有时候会在进程没有启动的时候就存在。)

info inferiors

切换调试的进程:

 inferior <infer number>

断点查看:

info b

使中断失效(断点仍然存在)或有效:

disable <b number>
enable <b number>

删除断点

clear : 删除程序中所有的断点

clear 行号 : 删除这行的断点

clear 函数名 : 删除该函数的断点

delete b_id1 b_id2 ... : 删除指定编号的断点

观察点(WatchPoint):

watch <expr>    变量发生变化时中断
rwatch <expr>    变量被读时中断
awatch <expr>     变量值被读或被写时中断

反汇编:

disassemble  /rm

指示显示汇编指令的同时,显示相应的程序源码;/r指示显示十六进制的计算机指令(raw instruction)。

查看寄存器

display/i $pc
(gdb) i r
(gdb) i r a                     # 查看所有寄存器(包括浮点、多媒体)
(gdb) i r esp
(gdb) i r pc

数组打印

set print array [on|off]
show print array

打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔。这个选项默认是关闭的。

set print elements 
show print array

如果你的数组太大了,那么就可以指定一个来指定数据显示的最大长度,当到达这个长度时,GDB就不再往下显示了。如果设置为0,则表示不限制。

GDB环境变量:

2       void main()
3       {
4               int a[10] = {0};
5               a[1] =8;
6               a[2] =4;
7               a[3] = 9;
8
9       }

只用敲回车,重复执行上一条语句,环境变量会自动累加,从而完成逐个输出的功能


image.png

gdb的gui调试窗口:

layout [src |asm|split]
ctrl-x a (按住Ctrl+x后松开再按a,以下快捷键操作方式相同)
ctrl-x 1 使TUI只显示一个窗口
ctrl-x 2 使TUI显示两个窗口
layout next 切换上一个视图
fs n 切换激活的窗口

gdbgui

将调试的gui在浏览器中显示
https://gdbgui.com/
安装gdbgui
pip install gdbgui
使用
gdbgui -p 10001 -r "a.out"
-p 10001表示设定的端口是10001,-r 表示是远程remote调试模式(即调试界面不在Linux机上)

相关文章

  • 2. gdb的使用

    参考链接1. GDB调试2. gdb调试方法3. gdb调试示例 1. 说说 gdb gdb 是一款 UNIX 系...

  • gcc常用命令

    gdb相关 gcc加-g才能使用gdb调试gdb -tui a.out打开调试界面run/stop/continu...

  • GDB调试记录

    gdb attach 15343 # 调试某个进程 GNU gdb (GDB) 7.12Copyrigh...

  • gdb调试基本方法

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

  • GDB命令

    gdb test 启动gdb调试test可执行文件gdb att 进程名 调试某个进程b [行数]/[函数名...

  • Xcode debug Hotspot(一)——创建Xcode项

    概述 前面安装gdb调试hotspot里面,我记录了自己安装gdb调试hotspot的过程。后来我发现,使用gdb...

  • 【实践】gdb调试golang程序入门及gdb命令列表

    1. 摘要 本文讲解gdb调试GOLANG程序的入门配置,以及gdb命令详解备忘。 2. gdb调试go程序入门...

  • 用gdb调试代码

    title: 用gdb调试代码tags: gdbdate: 2017-08-09 15:09:22 gdb调试 开...

  • PWN入门到放弃

    Linux下的pwn常用到的工具有: gdb:Linux调试中必要用到的 gdb-peda:gdb方便调试的工具,...

  • 使用GDB调试C++程序

    GDB调试利器 GDB, the GNU Project debugger, allows you to see ...

网友评论

      本文标题:gdb调试

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