赞
踩
roscore
的部分
这部分并不打算采用vscode的tasks.json来配置编译命令,而是选择手动的运行:
catkin_make --only_pkg-with-deps package_name
该命令可以单独的编译某个特定的package及其依赖项。
需要主要的是CMakeLists.txt应当修改成Debug模式:
OPTION(DEBUG_ON "Turn on DEBUG Mode" ON)
IF(DEBUG_ON)
MESSAGE("[Debug Mode]")
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
ELSE()
MESSAGE("[Release Mode]")
SET(CMAKE_BUILD_TYPE "Release")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
ENDIF()
这样OPTION改成ON或者OFF,即可指定编译模式,比较方便。
这部分工作是本文的重点,单击vscode最右侧工具栏的Debug按钮(图标是一个甲虫+暂停),点击debug页里的齿轮按钮,即可打开launch.json。内容修改成如下状态:
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "LiTAMIN2", "type": "cppdbg", "request": "launch", "program": "/home/xyw/catkin_ws/devel/lib/test_registration/test_registration_node", "args": ["251370668.pcd","251371071.pcd"], "stopAtEntry": true, "cwd": "${workspaceFolder}/data", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
解释下比较重要的几个选项:
program:
输入可执行文件的所在位置,要求是绝对路径。如果是ROS的话,一般编译出来都在~/catkin_ws/devel/lib/包名/节点名
。
args:
传入到程序里的参数,即main接受的argv,不需要则设置为[]
stopAtEntry:
设置为true,则会在刚进入程序后直接暂停,比较方便的一共功能,建议使能。
cwd:
指定程序运行的环境,需要注意的是${workspaceFolder}
指的是.vscode
文件夹的上层路径,以我的环境为例,等价于/home/xyw/catkin_ws/src/test_registration
。
(详情见于vscode变量含义)
在进入调试前,首先需要打开一个终端,运行roscore
,否则节点无法正常启用。
启动后,按工具栏左侧的Debug按钮,点击出现的浮窗里的绿色箭头,即可开始调试。
报错信息:Module containing this breakpoint has not yet loaded or the breakpoint address could not be obtained.
这一般是因为编译时没有加-g
导致的。有时候即便OPTION改成了ON,但编译依然还会按照OFF进行,这一点可以从编译输出信息里得到确认。
解决方法:catkin_make --only_pkg-with-deps package_name
加上后缀DDEBUG_ON=ON
,再重新编译。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。