vscode中使用断点 调试ROS功能包(一)

vscode 调试简介1

本文档详细指南如何使用 Visual Studio Code (VSCode) 高效构建和执行基于 C++ 和 Python 的 ROS 2 项目。内容涵盖以下主题:初始化 VSCode、通过 SSH 进行远程开发、使用 Docker 进行开发、加载 ROS 依赖项以及使用 Colcon 进行构建。此外,文档还深入介绍了在 ROS 2 环境中使用 C++ 和 Python 的具体技术,提供了宝贵的见解和技巧,以优化开发流程。

编译带有调试信息都源文件(方法1)

通过vscode里面的task.json来进行调试,使用colcon build加上--symlink-install--cmake-args -DCMAKE_BUILD_TYPE=Debug,具体task.json文件编写如下:

{
	"version": "2.0.0",
	"tasks": [
		{
			"label": "colcon: build",
			"type": "shell",
			"command": [
				"source /opt/ros/foxy/setup.bash;",
				"colcon build",
				"--symlink-install",
				"--event-handlers console_cohesion+",
				"--base-paths ${workspaceFolder}",
				"--cmake-args -DCMAKE_BUILD_TYPE=Debug"
			]
		},
		{
			"label": "colcon: clean",
			"type": "shell",
			"command": [
				"cd .;",
				"rm -rf build/ install/ log/;"
			]
		},
		{
			"label": "colcon: test",
			"type": "shell",
			"command": [
				"cd .;",
				"source /opt/ros/foxy/setup.bash;",
				"source install/setup.bash;",
				"colcon test",
				"--packages-select ros2_node",
				"--event-handlers console_direct+;"
			]
		}

	]
}

首先,执行 source /opt/ros/foxy/setup.bash; 加载 ROS 2 Foxy 的环境变量,这对于后续使用 ROS 工具链是必须的。接下来,任务调用 colcon build 命令来构建工程,并传递了一系列构建参数:

  • symlink-install:使用符号链接方式进行安装,这样可以加快构建速度并方便调试。
  • event-handlers console_cohesion+:配置事件处理程序,提供更为集中的构建输出,便于跟踪构建过程。
  • base-paths ${workspaceFolder}:指定构建的基础路径为当前工作区,确保构建工具正确定位工程根目录。
  • cmake-args -DCMAKE_BUILD_TYPE=Debug:将调试模式(Debug)传递给 CMake,这通常用于开发和调试阶段,以便在遇到问题时能获得更详细的调试信息。

使用符号链接进行安装(symlink install)指的是在构建后,不将编译生成的文件拷贝到安装目录,而是在安装目录创建指向源码或构建目录中目标文件的符号链接。

编译带有调试信息都源文件(方法2)

通过CmakeLists里面的文件来进行调试,需要在CmakeLists文件里面加入以下代码:

# 调试信息
if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build type" FORCE)
endif()
# 禁用优化
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  set(COMPILE_OPTIONS -Wall -Wextra -Wpedantic -O0)
endif()

使用launch.json文件进行调试launch方法

文件配置如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "GDP: launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/install/planning/lib/planning/planning_main_node",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
           // "preLaunchTask": "colcon: build",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
                {
                    "description": "防止 gdb 打开标准库函数",
                    "text": "-interpreter-exec console \"skip -rfu std::.*\"",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

1. "version": "0.2.0"
这是 VS Code 调试配置文件的版本号,不同版本可能有不同的字段要求。

  1. "configurations" 数组
    该数组包含一个或多个调试配置,每个配置描述了如何启动调试会话。

  2. "name": "GDP: launch"
    用户可以在 VS Code 的调试面板中选择此名称来启动调试,这个名称只是一个友好标签,方便识别不同的调试配置。

  3. "type": "cppdbg"
    指定调试类型为 C++,内部通过 Microsoft C++ 调试扩展与 GDB 进行对接。

  4. "request": "launch"
    表明这是一个启动调试会话的配置,而不是附加到已有进程(“attach”)的方式。

  5. "program": "\${workspaceFolder}/install/planning/lib/planning/planning_main_node"
    要调试的可执行文件所在路径。其中 “${workspaceFolder}” 是当前工作区根目录的占位符。如果路径存在问题,需要确认生成的可执行文件是否位于该位置。

  6. "args": []
    传递给可执行文件的命令行参数,这里为空数组表示不传递任何参数。若需要指定命令行参数,可以在其中填入字符串,如 [“–option”, “value”]。

  7. "stopAtEntry": false
    设置为 true 时,在程序入口函数(main)处立刻暂停;设置为 false 表示程序会直接运行,直到遇到断点或异常才暂停。

  8. "cwd": "${fileDirname}"
    调试进程的当前工作目录,使用打开文件所在的目录。若要使用工作区根目录,可改成 “${workspaceFolder}”。

  9. "environment": []
    可以在这里传递环境变量给调试进程。此处为空数组表示不额外配置环境变量。

  10. "externalConsole": false
    若为 true,则会在外部终端窗口中显示程序输入输出;false 时在 VS Code 调试控制台输出。

  11. "MIMode": "gdb"
    使用 GDB 作为调试器。如果系统上安装了 GDB 并包含在 PATH 中,VS Code 将通过该模式与 GDB 通信。

  12. "setupCommands"
    一组在启动调试器后立即执行的命令,可用于配置 GDB 行为:

  13. "-enable-pretty-printing":启用对常见容器、Eigen、STL 等类型数据结构的易读打印。

15. "-gdb-set disassembly-flavor intel":将反汇编格式设置为 Intel 风格,替代 AT&T 风格。

  1. "-interpreter-exec console "skip -rfu std::.*"":使 GDB 跳过对标准库函数的断点或深入调试,以便专注于用户代码。

使用launch.json文件进行调试attach方法

{
            "name": "Attach to ROS2 Node",
            "type": "cppdbg",
            "request": "attach",
            "program": "${workspaceFolder}/install/planning/lib/planning/planning_main_node",
            "processId": "${command:pickProcess}",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
                {
                    "description": "防止 gdb 打开标准库函数",
                    "text": "-interpreter-exec console \"skip -rfu std::.*\"",
                    "ignoreFailures": true
                }
            ]
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值