如何在 VS2015 中调试 Clang 静态链接库
How to debug Clang static-linked libraries in VS2015
我正在使用 VS2015 研究 Clang 代码库,.sln
文件是由 CMake 生成的。
我已将解决方案配置为 Debug/x64
,我可以看到生成的 .pdb
文件随库一起出现,但我无法中断链接到 clang 可执行文件的库代码。
例如,我在clangParse模块中设置了一些断点,在解析过程中控制流必须经过的地方,但是在打印AST之后,调试器并没有在clangParse模块中的断点处停止,而是只在 clang 模块本身设置的断点上。
对于其他一些带有可执行文件和静态库的手动创建的解决方案,我可以调试这些库。不确定为什么这不适用于 CMake 生成的 Clang/LLVM 解决方案。
我需要在这里进行什么特殊设置吗?
问题是 Clang 驱动程序在 Windows 内部生成了自己的子进程,所有有趣的事情都在子进程中完成,所以库中的断点永远不会命中,因为它们'正在另一个进程中。
要解决此问题,请安装 Microsoft Child Process Debugging Power Tool 并启用子进程调试,这会将子进程附加到调试器。
我正在使用 VS2015 研究 Clang 代码库,.sln
文件是由 CMake 生成的。
我已将解决方案配置为 Debug/x64
,我可以看到生成的 .pdb
文件随库一起出现,但我无法中断链接到 clang 可执行文件的库代码。
例如,我在clangParse模块中设置了一些断点,在解析过程中控制流必须经过的地方,但是在打印AST之后,调试器并没有在clangParse模块中的断点处停止,而是只在 clang 模块本身设置的断点上。
对于其他一些带有可执行文件和静态库的手动创建的解决方案,我可以调试这些库。不确定为什么这不适用于 CMake 生成的 Clang/LLVM 解决方案。
我需要在这里进行什么特殊设置吗?
问题是 Clang 驱动程序在 Windows 内部生成了自己的子进程,所有有趣的事情都在子进程中完成,所以库中的断点永远不会命中,因为它们'正在另一个进程中。
要解决此问题,请安装 Microsoft Child Process Debugging Power Tool 并启用子进程调试,这会将子进程附加到调试器。