插件调试指南
在 aubo_caps 开发过程中,需要频繁在 aubo_scope 示教器中调试正在开发的插件。本教程基于 Qt Creator 和 GDB 命令行分别进行调试说明,开发者可以根据个人使用习惯,选择更适合自己的调试方案。
1. 基于 Qt Creator 的示教器插件开发调试方案
1.1 设置插件输出路径
在安装 arcs 软件包后,root(或 home)目录下会生成 arcs_ws 文件夹,该文件便是 aubo_scope 的工作区间。由于 aubo_caps 必须加载到 aubo_scope 的工作目录下再运行,在构建可运行的插件时,可以将目标属性的输出路径设置在 arcs_ws 下。
以插件工程 myplugin 为例,在插件工程的 CMakeLists.txt 中设置插件输出路径,具体实现方式如下:
#设置插件的输出路径
set(PLUGIN_OUTPUT_PATH $ENV{HOME}/arcs_ws/extension)
#构建可以在 aubo_scope 中加载的插件
add_libary(myplugin SHARED
${_srcs}
${install_src}
${program_src}
)
set_target_properties(myplugin PROPERTIES
LABELS aubo_caps
OUTPUT_NAME myplugin
PREFIX ""
DEBUG_POSTFIX ""
LIBRARY_OUTPUT_DIRECTORY ${PLUGIN_OUTPUT_PATH}/myplugin
CXX_VISIBILITY_PRESET hidden
)在这个例子中,生成
myplugin动态库文件时所用到的${_srcs}、${install_src}、${program_src}文件,开发者可以依据自己插件的需求进行设置。在本教程中设置生成的
myplugin属性时,开发者只需要关注对于LIBRARY_OUTPUT_DIRECTORY目标路径的设置,其他属性可以依据自己插件的需求进行设置。
1.2 Qt Creator 中插件工程的编译配置
更改插件工程的运行配置,可以使在编译插件工程的时候,能够直接更新 arcs_ws 下该插件的内容并且运行 aubo_scope,更方便调试。以 myplugin 为例,具体操作流程如下:
打开
Qt Creator,并打开目标插件工程。选择左侧菜单栏中【项目】界面,点击【
run】。在该界面需要配置以下几个选项:“
Active Project”:需选择目标插件工程;“运行配置”:点击右侧【
add】,增加新的运行配置;“
EXecutable”:需点击【浏览】将路径设置为aubo_scope可执行文件的位置。在安装arcs时,通常默认安装在/opt/arcs下。

Build的路径一般设置在build目录下,建议也进行自定义的设置。操作顺序为:
“项目 > Build > 设置构建目录”

1.3 在 Qt Creator 中调试插件
完成以上配置之后,选中刚配置好的选项,然后直接编译插件工程,即可进行对插件的调试。
注意:
- 若对该插件配置了多种运行方案,则需要选择刚配置的运行
aubo_scope的配置(此处将配置重命名为debug_myplugin),如图所示:

编译插件运行结果如下:

- 在第一次加载插件到
aubo_scope示教器时,需要为arcs_ws提供插件的zip格式压缩包。
2. 基于GDB的示教器插件开发调试方案
2.1 插件输出路径的设置
在安装 arcs 软件包后,root(或 home)目录下会生成 arcs_ws 文件夹,该文件便是 aubo_scope 的工作区间。由于 aubo_caps 必须加载到 aubo_scope 的工作目录下再运行,在构建可运行的插件时,可以将目标属性的输出路径设置在 arcs_ws 下。
以插件工程 myplugin 为例,在插件工程的 CMakeLists.txt 中设置插件输出路径,具体实现方式如下:
#设置插件的输出路径
set(PLUGIN_OUTPUT_PATH $ENV{HOME}/arcs_ws/extension)
#构建可以在 aubo_scope 中加载的插件
add_libary(myplugin SHARED
${_srcs}
${install_src}
${program_src}
)
set_target_properties(myplugin PROPERTIES
LABELS aubo_caps
OUTPUT_NAME myplugin
PREFIX ""
DEBUG_POSTFIX ""
LIBRARY_OUTPUT_DIRECTORY ${PLUGIN_OUTPUT_PATH}/myplugin
CXX_VISIBILITY_PRESET hidden
)在这个例子中,生成
myplugin动态库文件时所用到的${_srcs}、${install_src}、${program_src}文件,开发者可以依据自己插件的需求进行设置。在本教程中设置生成的
myplugin属性时,只需要关注对于LIBRARY_OUTPUT_DIRECTORY目标路径的设置,其他属性可以依据自己的插件需求进行设置。这样设置可以在更新插件源码后,自动更新
arcs_ws工作目录下的插件动态库文件,无需像第一次在aubo_scope中加载插件时,要手动在arcs_ws目录下添加插件的zip包。
2.2 基于 GDB 的插件调试流程
第一次加载插件到 aubo_scope,必须将插件打包成 zip 格式复制到 arcs_ws 目录下。
编译插件源码,进入插件工程根目录,然后执行以下命令:
bash
mkdir -p build cd build cmake -DCMAKE_BUILD_TYPE=Debug.. make -jnproc
注意:编译时一定要注意保留 `debug` 信息,否则启动 `aubo_scope`会在插件中打上断点,不能进入到插件动态库代码中。即:`cmake -DCMAKE_BUILD_TYPE=Debug ..`
2. 在 `GDB` 下启动 `aubo_scope`:
`aubo_scope` 的默认安装路径在 `/opt/arcs` 下,若有多个版本的 `aubo-scope` 则需要选择合适的版本,进入 `bin` 目录即可找到 `aubo_scope` 可执行文件。如图所示,此处作为示例选择的是 0.18.0 版本。
```bash
cd /opt/arcs/0.18.0/bin
gdb ./aubo_scope若启动成功会提示:
Reading symbols from ./aubo_scope...done.设置断点、调试插件源码。断点需设置到插件源码中,可以直接利用
break命令设置断点进行调试。这里以myplugin插件为例,展示一个简易的调试过程:- 编译
myplugin源码:
- 编译
2. 启动 GDB:

3. 设置断点,此处断点位置如下图所示:

4. 查看断点处源码:
使用 list 命令可以查看当前堆栈区源码信息,默认显示 10 行。

5. 查看变量值:
使用单步调式命令 b 让程序跑到 int a = 100 的位置,使用 p 命令查看 a的值。
