vscode中ros c++代码调试

本文介绍了如何在ROS项目中启用gdb调试信息,通过修改CMakeLists.txt设置Debug模式,使用catkin_make构建调试版本,并在VSCode中配置launch.json进行程序启动和附加调试。重点推荐了使用gdbserver进行远程调试已运行程序的方法,因为它稳定且无需root权限。
摘要由CSDN通过智能技术生成

1.使能gdb与调试信息

1.程序CMakeLists.txt使能debug

SET(CMAKE_BUILD_TYPE Debug)
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
# SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

2.catkin_make指定debug版

catkin_make -DCMAKE_BUILD_TYPE=Debug

3.catkin_make调试指定的包

catkin_make -DCMAKE_BUILD_TYPE=Debug -DCATKIN_WHITELIST_PACKAGES="package1;package2"

2.vscode c++程序调试

vscode 安装c++插件,如图
在这里插入图片描述

创建调试的launch.json配置如下3种

launch 运行启动程序

{
    "version": "0.2.0",
    "configurations": [
    {
        "name": "(gdb) 启动",
        "type": "cppdbg",
        "request": "launch",
        // 注意更改的程序位置
        "program": "${workspaceFolder}/ros1/catkin_ws/devel/lib/beginner_tutorials/talker",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${fileDirname}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "为 gdb 启用整齐打印",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            },
            {
                "description": "将反汇编风格设置为 Intel",
                "text": "-gdb-set disassembly-flavor intel",
                "ignoreFailures": true
            }
        ]
    }
    ],

}

attach 调试已运行的程序

{
    "version": "0.2.0",
    "configurations": [
    {
        "name": "(gdb) 附加",
        "type": "cppdbg",
        "request": "attach",
        // 注意更改的程序位置
        "program": "${workspaceFolder}/ros1/catkin_ws/devel/lib/beginner_tutorials/talker",
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "为 gdb 启用整齐打印",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            },
            {
                "description": "将反汇编风格设置为 Intel",
                "text": "-gdb-set disassembly-flavor intel",
                "ignoreFailures": true
            }
        ]
    }
    ],
}

F5运行之后,选择调试的程序即可

方法3: 远程调试-万能通用的方法

解决vscode 无root权限调试问题

配置.vscode/launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            // "preLaunchTask": "C/C++: g++ 生成活动文件",
            "miDebuggerPath": "/usr/bin/gdb",
            "miDebuggerServerAddress":"127.0.0.1:6688"
        }
    ]
}

miDebuggerServerAddress 本机调试使用127.0.0.1, 6688是gdbserver调试端口

使用方法:
1.gdbserver启动程序
gdbserver 127.0.0.1:6688 ./a.out

2.gdbserver 调试已经运行程序

./a.out                 # 启动程序
ps -ef|grep a.out      # 获取已运行的程序pid
gdbserver --attach 127.0.0.1:6688  a.out_pid

2.安装ros插件

在这里插入图片描述

.vscode/launch.json添加调试配置,多出ROS: Launch,ROS: Attach选项
在这里插入图片描述

方法同c++ , ROS: Attach指定程序即可

总结:

目前使用gdbserver --attach 已经运行程序 方法最稳定, 没有root权限问题, 没有参数设置问题.
推荐使用此方法.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值