pb9调试时取得路径_使用gdbgui调试Zephyr

gdbgui

gdbgui是一款用Python编写的gdb前端,能在浏览器中进行可视化调试。因此该工具是可以跨平台使用的。

安装方法

python3 -m pip install –user pipx
python3 -m userpath append ~/.local/bin

使用gdbgui调试zephyr

从Zephyr调试器配置及原理一文的”调试器简介”可以了解到调试器的基本原理:无论是eclipse,vscode,ddd都是gdb本身的一个GUI前端工具,因此只要目标支持gdb调试,那么无论使用哪种gui前端都可以,而这里gdbgui也是gui前端。

启动目标板gdbserver

支援gdbserver的调试器有很多种,我使用的目标板上搭配的是DAPLink,其在PC上的Debug tool是pyocd, pyocd可以建立一个gdbserver让gdb来连接DAPLink对目标板进行调试。pyocd下启动gdbserver的命令如下

pyocd gdbserver –persist -t mimxrt1050_quadspi -bh
启动后可以看到下图,gdbserver的监听端口是在3333f247c90334574d0e9adf6d84d432f1c0.png

连接

启动gdbgui http server

安装好gdbgui后,直接执行下面命令就可以启动gdbgui的http server

gdbgui
默认情况下gdbgui会去启动gdb,由于我们是要调试zephyr,因此要用工具链中的gdb

启动gdb

访问http://127.0.0.1:5000/dashboard98e6cce51c6747378190b68119a6281c.png

  1. 输入gdb所在的路径

  2. 点击start new session
    将会启动一个新的gdb session,弹出一个新的session页面4396c08209c8058ecc8a020a3fc7702c.png
    在dashboard里面可以看到该session列表7d04bef9829756d91ae3542fddc1c21f.png

加载调试文件

按照下图方式加载要调试的zephyr.elfcde6f8c4e179cd26c5bbbda03f7764ce.png

  1. 输入zephyr.elf的绝对路径

  2. 点击load binary
    load成功后会显示main函数,并自动在main的第一条指令设置断点1ded2b2e763801714c9c209e41a5f698.png

远程连接gdbserver

这里通过浏览器控制gdb去连接gdbserver,步骤如下图2aa9e20ffba53e55c17676ebd459cfec.png

  1. 点击左上角的下拉列表,选择connect to gdb server

  2. 输入连接的gdbserver地址,前面知道gdbserver监听的是3333,因此这里输入127.0.0.1:3333

  3. 点击connect to gdb server
    连接成功后,gdb将控制调试目标halt住,如下图:已经可以看到halt住时的backtrace了c11d48cbe7b1856c8279fcb529bef82e.png

调试

点击左上角的”Fetch source files” 将加载调试elf使用的所有source文件,然后选择要打断点的文件,打开后在行号前单击,变蓝后说明打好断点,之后进行调试即可04b8ef7974ace8ef9f96aa09d7667f18.png
除了断点外,作为gdb的gui前端工具,gdbgui也提供了单步,查看变量,dump内存等功能。此外一些更复杂的功能也可通过左下方的gdb console进行cli操作。

其它

有些使用我们的gdb可能会开到其它机器上,可以使用下面命令启动gdbgui,让其它机器可以远程访问gdbgui的http server:

gdbgui -r

默认情况下开启的http server的端口号是5000,可以使用下面命令指定其它端口号

gdbgui -p 5001

小结

在不使用ide或者配置编辑器的情况下gdbgui提供了一种简单的gui调试方式。目前使用起来还有httpserver突然断链接的情况,但总体来说还算不错。

参考

https://www.gdbgui.com/
https://github.com/cs01/gdbgui

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值