Windows10环境下lldb无法设置断点、读取源文件问题求助
问题解决步骤
1. 修正编译参数
你当前的编译参数缺少Windows平台下Clang生成兼容LLDB调试信息的必要选项,替换为以下编译命令:
clang -fuse-ld=lld -g -gcodeview -O0 -std=c17 Example.c -o Example.exe -Wl,-pdb=Example.pdb
新增参数说明:
-gcodeview显式指定生成CodeView格式的调试信息,适配Windows平台的调试器-Wl,-pdb=Example.pdb强制链接器输出和可执行文件对应的PDB符号文件,避免符号文件命名不匹配
2. 修正LLDB启动方式
Windows平台下启动LLDB时必须指定完整的可执行文件后缀,否则会出现目标加载不完整的问题:
lldb Example.exe
3. 手动加载调试符号
LLVM 12版本的Windows端LLDB存在PDB自动加载的已知bug,进入LLDB交互界面后先执行以下命令手动加载符号:
target symbols add Example.pdb
加载完成后执行 image list 验证符号加载状态,正常会显示Example.exe和Example.pdb两条记录。
4. 兼容性优化
你使用的LLVM 12属于较早版本,Windows平台下LLDB对PDB格式的支持在LLVM 14及以上版本才基本稳定,升级到LLVM 16及以上版本可避免绝大多数符号加载异常问题,也不需要每次手动加载PDB文件。
你遇到的PDB文件可以被删除的现象正是因为旧版LLDB没有成功加载符号文件,自然不会占用该文件。
额外注意事项
如果编译时的工作目录和启动LLDB的工作目录不一致,需要手动配置源文件路径映射:
settings set target.source-map 编译时存放Example.c的绝对路径 当前存放Example.c的绝对路径
配置完成后list和源文件相关的断点命令即可正常使用。
内容的提问来源于stack exchange,提问作者alexoz12
相关产品推荐
相关产品推荐

