示教器插件调试方案 
在插件开发过程中,调试是一项非常重要且频繁的工作。目前提供基于 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】中设置一下内容:
#设置插件的输出路径
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】中设置一下内容:
#设置插件的输出路径
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 调试流程 
- 进入插件工程根目录,然后执行以下命令编译插件源码: bash- mkdir -p build cd build cmake -DCMAKE_BUILD_TYPE=Debug.. make -j`nproc`- 注意:一定要保留 - debug信息(即:- cmake -DCMAKE_BUILD_TYPE=Debug ..),否则启动 ARCS 后,在插件源码中打上断点,将不会进入到插件动态库代码中。
- 在 GDB 下启动 ARCS: bash- cd /opt/arcs/0.18.0/bin gdb ./aubo_scope- 注意:ARCS 的默认安装路径在【/opt/arcs】下,若同时安装了多个版本的 ARCS,需先选择合适的版本,然后进入其中的【bin】目录,即可以找到【aubo_scope】可执行文件(此处选择的是 0.18.0 版本)。 - 如果启动成功会提示: gdb- Reading symbols from ./aubo_scope...done.
- 在插件源码中设置断点,调试插件源码。可以直接利用 - break命令设置断点进行调试。
下面以插件 myplugin 为例,展示一个简易的调试过程:
- 编译 myplugin 源码。  
- 启动 GDB。  
- 设置断点,断点位置如下图所示。  
- 查看断点处源码。可以使用 - list命令可以查看当前堆栈区源码信息,默认显示 10 行。 
- 查看变量值。可以使用单步调式命令 - b让程序跑到- int a = 100的位置,使用- p命令查看- a的值。 
