(三) Trae 调试C++ 基本概念
调试C++基本概念
- 一、调试基础概念
- 1.1 调试信息格式
- 1.2 DWARF格式和PDB格式生成(图解)
- 1.3.典型工具链和调试信息
 
- 二、各工具链深度解析
- 1. Clang++ 与 G++ 的 DWARF 差异
 
- 三 调试工具
一、调试基础概念
1.1 调试信息格式
| 格式类型 | 适用系统 | 存在形式 | 
|---|---|---|
| DWARF | Unix-like 系统标准格式 | 嵌入可执行exe文件 (或独立.dwo文件 ) | 
| PDB | Windows 专有格式 | 独立的 .pdb文件 | 
1.2 DWARF格式和PDB格式生成(图解)
1.3.典型工具链和调试信息
c++编译工具链有:
- MSVC(MsBuild.exe cl.exe link.exe)
- LLVM (三条线)
 2.1 支持msvc的 (ninja.exe clang-cl.exe + msvc:link.exe)
 2.2 支持LLVM原生的(ninja.exe clang++.exe lld.exe)
 2.2 支持MinGw的(ninja.exe clang++.exe + MinGw:ld.exe)
- MInGw (make.exe g++.exe ld.exe)
C++工具链表格:
| 工具链 | 编译器 | 链接器 | 调试信息 | 典型调试器 | 
|---|---|---|---|---|
| MSVC | cl.exe | link.exe | .pdb文件 | windbg.exe / CDB.exe / vs的IDE | 
| LLVM | clang-cl | link.exe | .pdb 文件 | WinDbg.exe | 
| LLVM | clang++ | lld.exe | DWARF-5 (内嵌入exe) | LLDB.exe | 
| LLVM | clang++ | ld.exe | 此处没有实践过 | |
| MinGw | g++ | ld.exe | DWARF-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 | 下载安装MinGw | g++.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 差异
关键区别:
 版本差异:LLVM 默认 DWARF-5(更紧凑),GCC 默认 DWARF-4
 模板调试:Clang 保留完整实例化链,GCC 可能丢失中间层
 跨平台性:LLVM 生成格式在各平台一致性更好
三 调试工具
| 工具链 | 调试格式 | 调试器 | 
|---|---|---|
| MSVC | pdb | windbg.exe CBD(console debuger) vs-IDE | 
| LLVM | DWARF-5 | lldb.exe | 
| MinGw | DWARF-4 | lld.exe | 
