(三) Trae 调试C++ 基本概念

调试C++基本概念

  • 一、调试基础概念
    • 1.1 调试信息格式
    • 1.2 DWARF格式和PDB格式生成(图解)
    • 1.3.典型工具链和调试信息
  • 二、各工具链深度解析
    • 1. Clang++ 与 G++ 的 DWARF 差异
  • 三 调试工具
    • 3.1 调试工具
    • 3.2 调试插件(Trae)

一、调试基础概念

1.1 调试信息格式

格式类型适用系统存在形式
DWARFUnix-like 系统标准格式嵌入可执行exe文件
(或独立.dwo文件 )
PDBWindows 专有格式独立的 .pdb文件

1.2 DWARF格式和PDB格式生成(图解)

编译时生成
Linux/macOS
编:clang++ g++.exe
链:lld.exe
链:ld.exe
Windows 编:cl.exe clang-cl.exe
链:link.exe
源代码
调试信息
DWARF格式
PDB格式
DWARF集成格式<在exe内部>
.PDB文件格式
调试器=调试文件
LLDB=DWARF-5
GDB=DWARF-4
调试器=调试文件
WinDbg=pdb文件
CDB=pdb文件

1.3.典型工具链和调试信息

c++编译工具链有:

  1. MSVC(MsBuild.exe cl.exe link.exe)
  2. LLVM (三条线)
    2.1 支持msvc的 (ninja.exe clang-cl.exe + MSVC:link.exe)
    2.2 支持LLVM原生的(ninja.exe clang++.exe LLVM:lld.exe)
    2.2 支持MinGw的(ninja.exe clang++.exe + MinGw:ld.exe)
  3. MinGw (make.exe g++.exe ld.exe)

C++工具链表格:

工具链编译器链接器调试信息典型调试器
MSVCcl.exelink.exe.pdb文件windbg.exe / CDB.exe / vs的IDE
LLVMclang-cllink.exe.pdb 文件WinDbg.exe
LLVMclang++lld.exeDWARF-5
(内嵌入exe)
LLDB.exe
LLVMclang++ld.exe未实践过
MinGwg++ld.exeDWARF-4(2,3)
(内嵌如exe)
GDB.exe

补充:工具链来源

编译工具链来源内容
MSVC安装visual studio (vs_installer.exe 安装时,选择编译安装c++)cl.exe link.exe windbg.exe等
LLVM下载安装:LLVM包clang++.exe lld.exe
clang-cl.exe
MinGw下载安装MinGwg++.exe ld.exe等

简单补一句:
clang-cl.exe 就是用来快速支持替换cl.exe的,他支持cl.exe的大部分命令行参数
基本可以认为是如此使用

cl.exe       main.cpp -o mian.exe
clang-cl.exe main.cpp -o main.exe

二、各工具链深度解析

1. Clang++ 与 G++ 的 DWARF 差异

g++.exe ld.exe
GIMPLE
GCC前端
Gold/BFD链接器
DWARF-4
clang++.exe lld.exe
LLVM IR
Clang前端
LLD链接器
DWARF-5

关键区别:
版本差异:LLVM 默认 DWARF-5(更紧凑),GCC 默认 DWARF-4
模板调试:Clang 保留完整实例化链,GCC 可能丢失中间层
跨平台性:LLVM 生成格式在各平台一致性更好

三 调试工具

3.1 调试工具

工具链调试格式调试器
MSVCpdbwindbg.exe
CBD(console debuger)
vs-IDE
LLVMDWARF-5lldb.exe
MinGwDWARF-4lld.exe

3.2 调试插件(Trae)

  1. Extension Pack for C/C++(KylinIdeTeam) 已经包含:
    1.1 kylin Clangd
    1.2 C/C++ Debug(gdb) – 因为这个,所以下载较慢
    1.3 CMake Intelli
    1.4 CMake Tool(fork)
    1.5 Kylin Native Debug
  2. CodeLLDB (vadimcn)

其中ColdeLLDB是用来调试LLVM原生的lldb.exe连接出来的程序.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink部署与应用——部署方式介绍

引入 我们通过Flink相关论文的介绍&#xff0c;对于Flink已经有了初步理解&#xff0c;这里简单的梳理一下Flink常见的部署方式。 Flink 的部署方式 StandAlone模式 介绍 StandAlone模式是Flink框架自带的分布式部署模式&#xff0c;不依赖其他的资源调度框架&#xff0c…

【智慧城市】新中地GIS开发实训:基于 Vue 框架的武汉智慧旅游系统

首页 地球自转页 控制台页 景点信息页 天气预报页 路线规划页 查询页 AI问答页 热力图页 测量页 来源&#xff1a; 【智慧城市】新中地GIS开发实训&#xff1a;优秀学生项目作品&#xff08;58&#xff09;基于 Vue 框架的武汉智慧旅游系统

C++入侵检测与网络攻防之网络嗅探以及ARP攻击

目录 1.tcpdump基本使用 2.tcpdump条件过滤 3.wireshark介绍 4.wireshark的介绍 5.tcp握手挥手分析 6.telnet服务的介绍和部署 7.复习 8.telnet服务的报文嗅探 9.网络嗅探基础 10.arp协议的解析 11.arp攻击原理以及试验环境 12.arp实验以及防御方式 1.tcpdump基本使…

【数据可视化-28】2017-2025 年每月产品零售价数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

系统与网络安全------弹性交换网络(3)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 STP协议 环路的危害 单点故障 PC之间的互通链路仅仅存在1个 任何一条链路出现问题&#xff0c;PC之间都会无法通信 解决办法 提高网络可靠性 增加冗余/备份链路 增加备份链路后交换网络上产生二层环路 …

广州 3D 展厅开启企业展示新时代​

为了突破传统展厅的局限&#xff0c;满足企业日益增长的展示需求&#xff0c;3D 展厅应运而生。3D 展厅是利用虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;和三维建模等先进技术&#xff0c;构建出的一个高度逼真的数字化展示空间 。它打破了传统展…

C++初登门槛

多态 一、概念 多态是指不同对象对同一消息产生不同响应的行为。例如&#xff0c;蓝牙、4G、Wi-Fi 对“发送数据”指令有不同的具体实现。 二、核心理解 本质&#xff1a;通过基类指针或引用操作子类对象&#xff0c;实现运行时动态绑定。 表现形式&#xff1a; 接口统一&a…

文件上传详细版

文件上传造成因素&#xff1a; 文件路径过滤不严格&#xff0c;可能通过遍历目录来获得文件&#xff0c;也可能通过文件上传对重要文件案进行覆盖&#xff0c;还可能对文件拓展名和文件类型过滤不严格&#xff0c;可以上传任意文件到web公开目录上&#xff0c;进而远程控制服务…

华为网路设备学习-19 IGP路由专题-路由策略

一、 二、 注意&#xff1a; 当该节点匹配模式为permit下时&#xff0c;参考if else 当该节点匹配模式为deny下时&#xff1a; 1、该节点中的apply子语句不会执行。 2、如果满足所有判断&#xff08;if-match&#xff09;条件时&#xff0c;拒绝该节点并跳出&#xff08;即不…

智能指针之设计模式4

前面的文章介绍了使用工厂模式来封装智能指针对象的创建过程&#xff0c;下面介绍一下工厂类 enable_shared_from_this的实现方案。 4、模板方法模式 在前面的文章分析过&#xff0c;enable_shared_from_this<T>类是一个工厂基类&#xff0c;提供的工厂方法是shared_f…

【Nova UI】十、打造组件库第一个组件-图标组件(下):从.svg 到 SVG Vue 组件的高效蜕变✨

序言 在组件库开发的精彩旅程中&#x1f680;&#xff0c;我们已经成功打造并完善了图标组件体系&#xff0c;赋予其强大的功能和丰富的表现力&#x1f389;。然而&#xff0c;随着业务版图的不断扩张&#x1f310;&#xff0c;手动逐个编写 SVG Vue 组件的传统方式&#xff0…

Golang | 倒排索引

文章目录 倒排索引的设计倒排索引v0版实现 倒排索引的设计 通用搜索引擎 v.s. 垂直搜索引擎&#xff1a; 通用搜索引擎&#xff1a;什么都可以搜索&#xff0c;更加智能化垂直搜索引擎&#xff1a;只能搜自家数据库里面的内容&#xff0c;一般都带着搜索条件&#xff0c;搜索一…

Windows 10 上运行 Ollama 时遇到 llama runner process has terminated: exit status 2

在 Windows 10 上运行 Ollama 时遇到 llama runner process has terminated: exit status 2 错误&#xff0c;可能是由多种原因引起的。以下是逐步解决方案&#xff1a; 1. 检查 Ollama 服务状态 按 Win R 输入 services.msc&#xff0c;找到 Ollama 服务&#xff0c;确保其状…

PCI 总线学习笔记(五)

PCI 总线学习系列&#xff0c;参考自 技术大牛博客&#xff1a; PCIe 扫盲系列博文连载目录篇 书籍&#xff1a;王齐老师的《PCI Express 体系结构导读》 下面的文章中加入了自己的一些理解和实际使用中遇到的一些场景&#xff0c;供日后查询和回忆使用 PCI 总线定义了两类配置…

Spring Cloud Alibaba VS Spring Cloud

​​Spring Cloud Alibaba 与 Spring Cloud 组件对比​ ​​服务发现与注册中心​ 功能​​​Spring Cloud​​​Spring Cloud Alibaba​对比说明​​核心组件​EurekaNacosNacos 支持动态配置管理、健康检查更灵活&#xff0c;且提供 DNS 服务发现能力。​​​​健康检查​​…

Java—— 常见API介绍 第五期

JDK8以后新增的时间相关类 Date类ZoneId&#xff1a;时区Instant&#xff1a;时间戳ZoneDateTime&#xff1a;带时区的时间 日期格式化类 SimpleDateFormat DateTimeFormatter&#xff1a;用于时间的格式化和解析 日历类 Calendar LocalDate&#xff1a;年、月、日LocalTime…

Java与Kotlin在Android开发中的全面对比分析

趋势很重要 语言发展背景与现状 Android操作系统自2008年正式发布以来&#xff0c;Java长期作为其主要的开发语言。这种选择源于Java语言的跨平台特性、成熟的生态系统以及广泛开发者基础。然而&#xff0c;随着移动开发需求的快速演变&#xff0c;Java在Android开发中逐渐暴…

第一部分:git基本操作

目录 1、git初识 1.1、存在的问题 1.2、版本控制器 1.3、git安装 1.3.1、CentOS平台 1.3.2、ubuntu平台 2、git基本操作 2.1、创建仓库 2.2、配置git 3、工作区、暂存区、版本库 4、基本操作 4.1、场景一 4.2、场景二 4.3、修改文件 5、版本回退 6、撤销修改 …

正则表达式与python使用

一、Python正则表达式基础 1. 导入模块 Python通过 re 模块实现正则表达式功能&#xff0c;需先导入模块&#xff1a; import re2. 核心语法 普通字符&#xff1a;直接匹配字面值&#xff08;如 a 匹配字符 a&#xff09;。元字符&#xff1a; \d&#xff1a;匹配数字&…

从FP32到BF16,再到混合精度的全景解析

笔者做过目标检测模型、超分模型以及扩散生成模型。其中最常使用的是单精度FP32、半精度FP16、BF16。 双精度"FP64"就不说了&#xff0c;不太会用到。 #1. 单精度、半精度和混合精度 单精度&#xff08;FP32&#xff09;、半精度&#xff08;FP16&#xff09;和混合…