文章目录
- 一、在终端中使用 gdb 进行调试
- 二、QtCreator 配置
以下教程以“构建工具”一节中提到的 linglong-builder-demo 项目为例。我们将项目放在 /path/to/project。参考教程操作时注意对路径进行替换。
由于玲珑应用运行在容器中,想要在宿主机上对其进行调试,我们需要在容器中使用 gdbserver 运行应用,所以首先需要安装 gdbserver。
我们可以使用发行版提供的 gdbserver,以 apt 为例:
sudo apt install gdbserver gdb -y
接下来参考“运行编译后的应用”中的教程,通过 ll-build run 命令在容器中运行 bash,并通过 gdbserver 运行需要被调试的应用:
ll-build run --exec /bin/bash
# 在容器中:
gdbserver :10240 deepin-draw
上述命令中,:10240为任意当前没有被占用的 tcp 端口。之后我们还需要做两件事情:
- 在容器外使用 gdb 连接上容器中的 gdbserver;
- 设置源码映射路径。
一、在终端中使用 gdb 进行调试
-
找到容器中被执行的可执行文件在宿主机上的位置,对于如上项目,该文件位于 /path/to/project/.linglong-target/overlayfs/up/opt/apps/org.deepin.demo/files/bin/demo。
对于通过 ll-cli 安装的应用,其可执行程序一般位于 $LINGLONG_ROOT/layers/[appid]/[version]/[arch]/files/bin 下。
在容器外使用 gdb 加载该程序:
gdb /path/to/project/.linglong-target/overlayfs/up/opt/apps/org.deepin.demo/files/bin/demo -
在 gdb 中使用 target 命令连接 gdbserver,操作如下所示:
target remote :10240 -
在 gdb 中输入以下命令以设置路径映射,帮助 gdb 找到对应的源代码,假定源码放置在主机的Desktop,命令如下:
set substitute-path /source /path/to/project
之后正常使用 gdb 即可。
二、QtCreator 配置
参考上述过程,我们可以很轻松地完成 QtCreator 的配置:
依次点击:调试>开始调试>连接到正在运行的调试服务器,在对话框中填入:
服务器端口:`10240`
本地执行档案:`/path/to/project/.linglong-target/overlayfs/up/opt/apps/org.deepin.demo/files/bin/demo`
Init Commands: `set substitute-path /source /path/to/project`
大致配置如下图所示:
配置完成后,即可正常使用QtCreator来进行调试了。