打印
[其它应用]

嵌入式Linux的GDB调试与常用命令

[复制链接]
1890|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1、GDB的部署   
建立gdb调试链接过程:
1、主机启动gdb,目标板启动服务器gdbserver。
2、同时注意所调试程序编译选项需要带-g选项增加调试信息,并且主机和目标板上的调试程序需保持一致。
3、开发板运行 : "gdbserver 主机IP:端口 ./被调试的程序"。
4、在ubuntu主机上运行gdb:"arm-none-linux-gdb 被调试程序"。
5、在ubuntu主机中开始使用gdb连接开发板:" target remote 开发板IP:端口",这样便进入了gdb调试状态,然后在ubuntu主机上输入对应的gdb命令便可调试程序了。
2、GDB常用命令   以下是15个常用的GDB调试命令,有效地进行调试:
  • gdb <program>
    启动GDB并加载指定的可执行文件。
  • run(或r)
    启动程序的执行。可以带参数,例如run arg1 arg2。
  • break <location>(或b <location>)
    在指定位置设置一个断点。位置可以是行号、函数名或文件名+行号,例如break main或b 25。
  • continue(或c)
    从当前断点处继续执行程序,直到下一个断点或程序结束。
  • step(或s)
    单步执行程序,进入函数内部。
  • next(或n)
    单步执行程序,但不进入函数,直接执行到下一行。
  • finish
    继续执行当前函数直到返回,并显示返回值。
  • print <expression>(或p <expression>)
    打印指定表达式的值。例如,print x会显示变量x的当前值。
  • display <expression>
    每次程序停止时自动显示指定表达式的值。可以用来监控变量的变化。
  • backtrace(或bt)
    显示当前调用栈的信息,帮助分析程序的执行路径。
  • list(或l)
    显示当前执行的源代码位置附近的代码行。
  • watch <expression>
    设置观察点,当表达式的值发生变化时暂停程序。
  • info breakpoints
    显示当前设置的所有断点的信息。
  • delete <breakpoint_number>
    删除指定的断点。例如,delete 1会删除编号为1的断点。
  • quit(或q)
    退出GDB。
3、重要的调试命令   1. aw (Access Watchpoint)
  • 命令: aw <location>
  • 用途: 设置一个访问观察点,当程序读取或写入指定位置的内存时,程序将会停止。
  • 参数:
    • <location>: 可以是变量名、内存地址或表达式,例如 aw myVar 或 aw *0x12345678。
  • 示例:
    aw myVariable
    这将会在 myVariable 被读取或修改时停止程序。

2. rw (Read Watchpoint)
  • 命令: rw <location>
  • 用途: 设置一个只读观察点,当程序尝试读取指定位置的内存时,程序将会停止。如果该位置被写入,不会触发停止。
  • 参数:
    • <location>: 可以是变量名、内存地址或表达式,例如 rw myVar 或 rw *0x12345678。
  • 示例:
    rw myVariable
    这将会在 myVariable 被读取时停止程序,但在被修改时不会停止。

3.until 命令用于让程序继续执行直到当前堆栈帧返回或者到达一个特定的源代码行。这通常用于在调试时快速跳过一些不相关的代码块,直接运行到下一个重要的代码位置。
until 命令的用法:
  • 命令: until [location]
  • 语法:
    • until:不带参数时,将执行直到当前函数返回。
    • until <location>:可以指定一个源代码位置(行号)或地址,程序将继续执行直到到达该位置。

使用特权

评论回复
沙发
szt1993| | 2024-11-20 10:03 | 只看该作者
GDB调试很实用的一个功能

使用特权

评论回复
板凳
tpgf| | 2024-12-3 08:29 | 只看该作者
通过命令行输入gdb来启动GDB调试器,通常需要带上要调试的程序名称,例如gdb my_program

使用特权

评论回复
地板
xiaoqizi| | 2024-12-4 17:59 | 只看该作者
GDB是GNU计划的一部分,它允许开发者查看程序在执行过程中的内部状态,从而更好地理解程序的运行机制,找出并修复程序中的错误

使用特权

评论回复
5
木木guainv| | 2024-12-4 19:47 | 只看该作者
为了深入了解程序的执行流程,可以使用[size=0.875]step[size=0.875]next命令进行单步执行

使用特权

评论回复
6
磨砂| | 2024-12-4 21:33 | 只看该作者
在程序暂停时,可以使用[size=0.875]print命令查看变量的值,这对于理解程序的行为和逻辑非常有帮助

使用特权

评论回复
7
晓伍| | 2024-12-4 23:21 | 只看该作者
使用[size=0.875]continue命令可以继续执行程序直到下一个断点或程序结束;使用[size=0.875]quit命令可以退出GDB调试器

使用特权

评论回复
8
八层楼| | 2024-12-5 10:59 | 只看该作者
GDB支持许多高级功能,如条件断点、临时断点、监视点等

使用特权

评论回复
9
Bowclad| | 2024-12-13 14:51 | 只看该作者
gdb好用吗?一直没学会怎么调试

使用特权

评论回复
10
小夏天的大西瓜| | 2024-12-15 22:34 | 只看该作者
非常不错的实例

使用特权

评论回复
11
CarterERO| | 2024-12-18 11:32 | 只看该作者
有没有gdb的使用教程啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2055

主题

7455

帖子

10

粉丝