Appearance
示教器插件调试方案
在插件开发过程中,调试是一项非常重要且频繁的工作。目前提供基于 Qt Creator 和 GDB 命令行两种调试方案,开发人员可以根据需求选择合适的调试方案完成插件调试。
基于 Qt Creator 的插件开发调试方案的前提条件:
- Qt Creator 与 ARCS 安装在同一开发环境下。
- 插件已加载至 ARCS 软件中。
基于 GDB 的插件开发调试方案的前提条件:
- 插件已加载至 ARCS 软件中。
基于 Qt Creator 的插件开发调试方案
插件输出路径的设置
当安装 ARCS 软件包后,软件将在【root】(或【home】)目录下生成【arcs_ws】文件夹,【arcs_ws】文件夹就是 ARCS 的工作区间。而插件必须加载到 ARCS 的工作目录下才能运行,由此可以在构建可以运行的插件时,将目标属性的输出路径设置在【arcs_ws】文件夹下。
下面以插件 myplugin 为例,在 myplugin 的【CMakeLists.txt】中设置一下内容:
cmake
#设置插件的输出路径
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
目标路径的设置,其他属性可以按需自行设置。
插件工程的编译配置
当 Qt Creator 与 ARCS 安装在同一开发环境下时,更改插件工程的运行配置,使得在编译插件工程时,直接更新【arcs_ws】下该插件的内容并且运行 ARCS 软件方便调试。
下面以插件 myplugin 为例,演示具体配置方法:
打开 Qt Creator,打开 myplugin 插件工程。
单击左侧菜单栏中【项目】,单击【项目 > Run】,配如下几项:
- Active Project:选择插件工程(myplugin)。
- 运行配置:需要增加一种新的运行配置,可点击右侧【Add...】来增加。
- EXecutable:将该路径设置为 ARCS 可执行文件的位置。安装 ARCS 时候默认安装在【/opt/arcs】下。
主要思路:更改插件工程的运行配置,使得在编译插件工程的时候,直接更新
arcs_ws
下该插件的内容并且运行aubo_scope
方便调试。具体配置:(这里以
myplugin
为例)打开
qtcreator
,并打开我们的插件工程。选择左侧菜单栏中项目,点击
run
。在该界面需要配置以下几个选项:Active Project
:选择插件工程。运行配置:需要增加一种新的运行配置,可点击右侧
add
来增加。EXecutable
:将该路径设置为aubo_scope
可执行文件的位置。安装arcs
时候默认安装在/opt/arcs
下。
(建议修改)自定义【Build】路径,一般设置为【build】目录下。
Qt Creator 调试流程
打开 Qt Creator,打开 myplugin 插件工程。
单击左侧菜单栏下侧【Debug】,选择配置好的选项,然后直接编译插件工程,即可进行对插件的调试。
- 若对该插件配置了多种运行方案,则需要选择刚配置的运行
aubo_scope
的配置(此处的配置重命名为debug_myplugin
)。
- 若对该插件配置了多种运行方案,则需要选择刚配置的运行
编译插件运行结果如下:
基于 GDB 的插件开发调试方案
设置插件输出路径
与 Qt Creator 调试方案类似,在构建可以运行的插件时,将目标属性的输出路径设置在【arcs_ws】文件夹下,实现在更新插件源码后,自动更新【arcs_ws】文件夹下的插件动态库文件的效果。
下面以插件 myplugin 为例,在 myplugin 的【CMakeLists.txt】中设置一下内容:
cmake
#设置插件的输出路径
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
目标路径的设置,其他属性可以按需自行设置。
GDB 调试流程
进入插件工程根目录,然后执行以下命令编译插件源码:
bashmkdir -p build cd build cmake -DCMAKE_BUILD_TYPE=Debug.. make -j`nproc`
注意:一定要保留
debug
信息(即:cmake -DCMAKE_BUILD_TYPE=Debug ..
),否则启动 ARCS 后,在插件源码中打上断点,将不会进入到插件动态库代码中。在 GDB 下启动 ARCS:
bashcd /opt/arcs/0.18.0/bin gdb ./aubo_scope
注意:ARCS 的默认安装路径在【/opt/arcs】下,若同时安装了多个版本的 ARCS,需先选择合适的版本,然后进入其中的【bin】目录,即可以找到【aubo_scope】可执行文件(此处选择的是 0.18.0 版本)。
如果启动成功会提示:
gdbReading symbols from ./aubo_scope...done.
在插件源码中设置断点,调试插件源码。可以直接利用
break
命令设置断点进行调试。
下面以插件 myplugin 为例,展示一个简易的调试过程:
编译 myplugin 源码。
启动 GDB。
设置断点,断点位置如下图所示。
查看断点处源码。可以使用
list
命令可以查看当前堆栈区源码信息,默认显示 10 行。查看变量值。可以使用单步调式命令
b
让程序跑到int a = 100
的位置,使用p
命令查看a
的值。