(三) 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 |