首页 > 编程语言 >Fast-Dds源码调试方案

Fast-Dds源码调试方案

时间:2023-10-05 15:34:31浏览次数:42  
标签:Dds Fast DDS gdb 源码 DCMAKE 安装 调试

1、虚拟机安装:参考ubuntu fastdds安装 - 墨尔基阿德斯 - 博客园 (cnblogs.com)

2、Ubuntu安装gdb:

sudo apt install gdb

3、查看gdb的安装路径(默认安装在 /usr/bin/gdb):

which gdb

4、配置调试参数,以示例程序HelloWorldExample为例:

  1)、重新编译fastdds库(只编译一次就行,更换调试示例程序后无需重新编译):

    第1步虚拟机安装中的【5.编译安装Fast-DDS】,重新执行4、5命令,其中第4步改为:

cmake ..  -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install -DCMAKE_BUILD_TYPE=Debug ..

  2)、重新编译示例程序:

1 cd ~/Fast-DDS/Fast-DDS/examples/cpp/dds/HelloWorldExample/
2 mkdir build && cd build
3 cmake .. -DCMAKE_PREFIX_PATH=~/Fast-DDS/install/  -DCMAKE_BUILD_TYPE=Debug ..
4 make

5、使用vscode安装ssh工具远程打开虚拟机源码(略)

6、添加如下配置:

 1 {
 2     // 使用 IntelliSense 了解相关属性。 
 3     // 悬停以查看现有属性的描述。
 4     // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
 5     "version": "0.2.0",
 6     "configurations": [
 7         
 8         {
 9             "name": "(gdb) 启动",
10             "type": "cppdbg",
11             "request": "launch",
12             "program": "${workspaceFolder}/examples/cpp/dds/HelloWorldExample/build/DDSHelloWorldExample",
13             "args": ["publisher"],
14             "stopAtEntry": false,
15             "cwd": "${workspaceFolder}/",
16             "environment": [],
17             "externalConsole": false,
18             "MIMode": "gdb",
19             "setupCommands": [
20                 {
21                     "description": "为 gdb 启用整齐打印",
22                     "text": "-enable-pretty-printing",
23                     "ignoreFailures": true
24                 },
25                 {
26                     "description": "将反汇编风格设置为 Intel",
27                     "text": "-gdb-set disassembly-flavor intel",
28                     "ignoreFailures": true
29                 }
30             ],
31             "miDebuggerPath":"/usr/bin/gdb"
32         }
33 
34     ]
35 }
launch.json

 

  注意:

    12行为要调试的进程路径:

    13行为执行进程时的参数,执行订阅端时改为"subscriber",(较为不便,未找到解决方案)

    31行为gdb的安装路径。

7、添加必要的断点,然后点击【运行】->【启动调试】或直接按F5.

 

标签:Dds,Fast,DDS,gdb,源码,DCMAKE,安装,调试
From: https://www.cnblogs.com/peifx/p/17743407.html

相关文章

  • FASTNAT介绍和使用帮助
    下载地址Windows 64位MacOSX 64位Linux 64位Linux/ARM 32位 64位一、FastNat可为您解决的问题1.没公网服务器,需要发布本地的站点或网络程序到公网上,供他人访问;    此项功能大大方面开发人员进行远程调试,微信小程序等开发工作进行。2.需要远程到在其他网......
  • 原生小程序电子班牌系统 智慧校园云平台源码
    智慧校园云平台电子班牌系统源码 智慧班牌全套源码智慧校园云平台电子班牌系统,集学生管理、班级管理、校园管理于一身,融合学校教务管理、教师管理、学籍管理、考勤、信息发布、班级文明建设、校园风采、家校互通等一系列应用,为校园管理现代化、信息化提供有效解决工具。智慧班牌实......
  • Proj CDeepFuzz Paper Reading: NYX: Greybox Hypervisor Fuzzing using Fast Snapsho
    Abstract背景:hypervisor(virtualmachinemonitor,VMM)保障了不同虚拟机之间的安全隔离(securityboundaries)用户:攻击场景:在云服务上运行自身的VMinstances,提升权限本文:Nyx目的:coverageguidedhypervisorfuzzermethod:1.fastsnapshotrestorationmechanism2.mu......
  • springboot+Uniapp+redis开发的AI医疗智能导诊系统源码
    AI+医疗的智能导诊系统源码 自主版权 支持二开一、什么是智能导诊系统?智能导诊系统是一种基于人工智能和大数据技术开发的医疗辅助软件,它能够通过对患者的症状、病史等信息进行计算分析,快速推荐科室和医生。通过简单的描述自身症状,系统即可找到最适合的科室,实现线上高效挂号,线下......
  • Qemu源码分析(11)—Apple的学习笔记
    一,前言昨天了解了qemu中虚拟开发板的内存创建,接着再了解下中断创建和使用。二,分析昨天看了flash初始化,后面的我理解应该一样,接着发现sram初始化后,本来以为和flash是一样的,结果多了如下一句,通过注释也很好理解就是把1个bit展开为了1个byte,这样1M的sram变成了32M空间。//Bitbandthe......
  • 手动开发-简单的Spring基于注解配置的程序--源码解析
    在前文中《手动开发-简单的Spring基于XML配置的程序--源码解析》,我们是从XML配置文件中去读取bean对象信息,再在自己设计的容器中进行初始化,属性注入,最后通过getBean()方法进行返回。这篇文章,我们将基于注解的视角,实现简单的Spring容器。在这里我们还将做一些改动,前文我们是通过xml......
  • react17源码中部分二进制计算的解释
    theme:qklhk-chocolatehighlight:a11y-darkreact17放弃了之前的expirationTime而启用了lane模型,故而在原来16的基础上又产生了更多的二进制运算,在接下来的一段时间我打算把这些二进制运算都整明白了、关于react为什么会启用lane模型的官方解释js中的二进制位运算都是以32......
  • FastAPI
    FastAPI1.FastAPI简介1.介绍 FastAPI是一个用于构建API快速(高性能)的web框架使用Python3.6+并基于标准的Python类型提示开发快捷性能和NodeJSGO相当并集成SwaggerUI 2.特征 快速:可与NodeJS和Go并肩的极高性能(归功于Starlette和Pydantic)最快的......
  • Qemu源码分析(10)—Apple的学习笔记
    一,前言Qemu的虚化主要包括cpu虚化,内存虚化,io虚化。而且3类虚化都包括了全虚化,半虚化和硬件虚化,这些也是网上看到的,大概了解了下。而我本节看qemu源码主要分析内存虚化,至于内存应该是硬件虚化,也就是多用了也EPT扩展页表,这是内核kvm中的代码不是qemu的代码了,不是我现在关注的内容。二......
  • jdk8中的ConcurrentHashMap原理和源码解读
    HashMap本身是线程不安全的,所以jdk提供了ConcurrentHashMap,这一篇来看下jdk8中的实现一、基本原理在jdk7中采用了Segment分段锁的思想来实现,在jdk8中不再采用分段锁的思想,jdk8中的ConcurrentHashMap和HashMap一样,都只有一层Entry数组来实现,那么它是怎么保证线程安全呢,我们通......