vscode docker中调试ros c++ 程序

背景:

ros是以docker模式运行,程序运行在docker中。
cmake使能gdb与debug调试
参考:vscode中ros c++代码调试
CMakeLists.txt 添加

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")

方法1:在docker中安装vscode插件

1.vscode安装docker插件

在这里插入图片描述

2.运行docker

# 下载ros2 humble arm64版本
docker pull --platform linux/arm64/v8 ros:humble-ros-base
# 运行docker ros2
docker run -it ros:humble-ros-base bash
docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS     NAMES
7c21b6d8c8fc   ros:humble-ros-base   "/ros_entrypoint.sh …"   2 minutes ago   Up 2 minutes             zen_hodgkin

3.vscode连接到docker中服务,操作如下

在这里插入图片描述
4.在新vscode窗口中,安装对应c/c++,python,其它语言的开发调试器,即可正常调试。

方法2:通过网络端口远程调试

1.准备条件: 运行docker run时,添加端口映射

--net=host \
-p 本机端口:容器端口/协议 \

实例:
docker run -it 
--name ros2
--net=host \
-p 6688:6688/tcp \
ros:humble-ros-base bash

# 宿主机端口tcp 6688,映射到容器端口tcp 6688

2.docker 服务中运行 gdbserver

docker exec -it ros2 bash

#### 方式1.docker服务中启动程序
gdbserver localhost:6688 demo.out

#### 方式2.docker attach连接已运行的程序
查找demo.out 进程
gdbserver --attach localhost:6688 demo.out_pid

3.宿主机vscode配置,如gdb远程调试

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 附加",
            "type": "cppdbg",
            "request": "attach",
            "program": "${workspaceFolder}/demo.out",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/usr/bin/gdb",
            // 远程调试 ip:port
            "miDebuggerServerAddress": "127.0.0.1:6688",
        }
    ]
}

注意自己修改

  • program 程序位置

  • miDebuggerServerAddress 远程调试 ip:port

总结:

在这里插入图片描述

远程调试真的难啊,哈哈

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值