xmake 也支持直接加载 gdb 调试器运行编译好的可执行程序来实现断点调试,在开始调试前,我们需要先在当前环境安装下 gdb,在 Xfce 终端输入下面的命令。
sudo apt install -y gdb
gdb 安装完成后,需要在之前的 hello 项目中,将编译配置切换到 debug 模式重新编译程序,使编译好的程序带上符号信息(这个时候会传递 -g 编译选项给 gcc),这样我们才能够在调试器中正常下断点进行源码调试。
因此我们先来重新编译下 debug 版本程序。
xmake f -m debug
xmake
上面的 xmake f -m debug 就是切换的 debug 调试编译模式,保存配置后,重新执行 xmake 就可以编译生成带符号信息的 debug 程序,编译成功后的结果如下。
编译好后,我们就可以加载调试器运行了,还是之前的 xmake run 命令,只不过追加了 -d 参数,告诉 xmake 当前我们需要调试运行程序,xmake 会自动检测当前环境存在的调试器,然后运行它去加载我们的程序。
xmake run -d
如果看到 gdb 已经正常把程序加载了,就可以执行下面的命令在 main 入口函数下个断点,然后继续输入 r 继续运行程序,直到 main 函数断点被正常触发中断。
gdb> b main
gdb> r
gdb> q # 退出
断点正常触发后,我们就会看到实际断下的源码位置,这个时候可以继续使用 gdb 的其它调试命令来调试我们的程序了,关于 gdb 的使用细节,这里就不多讲了,这里主要是演示如何使用 xmake 去加载使用 gdb 调试器。
注意:gdb 调试程序需要在一台单独的主机上才能正确执行,由于这里使用的是容器环境,环境限制不能正确运行。
本文介绍了如何在Ubuntu/Linux环境下利用Xmake配合GDB进行C++程序的调试。首先需要安装GDB,然后在Xmake中切换到debug模式重新编译程序以包含符号信息。通过特定命令,Xmake能够自动检测并运行GDB加载程序,允许在main函数处设置断点进行源码级别的调试。但由于容器环境限制,实际调试需在独立主机上进行。



1563

被折叠的 条评论
为什么被折叠?



