读Livox_horizon_loam的ROS程序,对ROS采回来的雷达的数据格式和中间的数据转换理解不透,就将程序导入VScode,尝试通过调试查看数据的内容和格式的变化。在此记录一下。
1、安装好VScode之后,首先下载C/C++,C++ Intellisense, ROS,ROS(deprecated)这几个插件。
2、在原工作区间目录下执行如下命令:
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=1
3、在VScode中导入该工作区间,就会出现以下四个文件
其中c_cpp_properties.json自动生成的结果如下,一般不需要修改
{
"configurations": [
{
"browse": {
"databaseFilename": "",
"limitSymbolsToIncludedHeaders": true
},
"includePath": [
"/home/XXX/catkin_horizon/devel/include/**",
"/opt/ros/kinetic/include/**",
"/home/XXX/catkin_horizon/src/livox_horizon_loam/include/**",
"/usr/include/**"
],
"name": "ROS",
"intelliSenseMode": "gcc-x64",
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "c++17",
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
}
],
"version": 4
}
launch.json生成的文件如下,利用gdb工具进行调试,其中“program”改成需要进行调试、设置断点的节点的二进制可执行文件目录,我的是在/devel/lib下。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/devel/lib/loam_horizon/livox_repub",//可执行的二进制文件的目录
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
//"preLaunchTask": "make build"//最好删了,不然会影响调试,每次调试都直接执行make build
}
]
}
settings.json无需修改,task.json修改内容如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make", //代表提示的描述性信息
"type": "shell", //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
"command": "catkin_make",//这个是我们需要运行的命令
"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
"group": {"kind":"build","isDefault":true},
"presentation": {
"reveal": "always"//可选always或者silence,代表是否输出信息
},
"problemMatcher": "$msCompile"
},
]
}
4、之后就可以在节点中“program”中指定的节点中设置断点,查看中间变量。注意要在终端先运行roscore。
在查看中间变量过程中,发现有一部分变量显示已被优化,不能查看具体的数据,这个问题需要在CMakeLists.txt中将下面这句中的 -O2改为-O0,意思是在调试过程在放弃优化,方便查看中间变量,注意要在调试完成,程序准备完整正式运行时再修改回去以加快运行速度。
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -g")
版权声明:本文为qq_32580733原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。