Visual studio 如何调试VS2015中的Clang静态链接库

Visual studio 如何调试VS2015中的Clang静态链接库,visual-studio,debugging,visual-studio-debugging,static-linking,llvm-clang,Visual Studio,Debugging,Visual Studio Debugging,Static Linking,Llvm Clang,我正在用VS2015调查Clang代码库,而.sln文件是由CMake生成的。 我已经将解决方案配置为Debug/x64,我可以看到生成的.pdb文件以及libs,但是我无法中断链接到clang可执行文件的lib代码 例如,我在clangParse模块中设置了一些断点,在解析过程中控制流必须经过这些断点,但是在打印AST之后,调试器没有在clangParse模块中的断点上停止,而只是在clang模块本身中设置的断点上停止 对于其他一些手动创建的具有可执行库和静态库的解决方案,我可以调试这些库。不

我正在用VS2015调查Clang代码库,而
.sln
文件是由CMake生成的。 我已经将解决方案配置为
Debug/x64
,我可以看到生成的
.pdb
文件以及libs,但是我无法中断链接到clang可执行文件的lib代码

例如,我在clangParse模块中设置了一些断点,在解析过程中控制流必须经过这些断点,但是在打印AST之后,调试器没有在clangParse模块中的断点上停止,而只是在clang模块本身中设置的断点上停止

对于其他一些手动创建的具有可执行库和静态库的解决方案,我可以调试这些库。不知道为什么这对CMake生成的Clang/LLVM解决方案不起作用


我需要在这里进行任何特殊设置吗?

问题是,叮当驱动程序在Windows上内部生成一个子进程,所有有趣的事情都在子进程中完成,因此libs中的断点永远不会命中,因为它们在另一个进程中


要解决此问题,请安装并启用子进程调试,这会将子进程附加到调试器。

问题是,叮当驱动程序在Windows上内部生成自己的子进程,所有有趣的事情都在子进程中完成,因此LIB中的断点永远不会达到,因为它们处于另一个过程中


要解决此问题,请安装并启用子进程调试,这会将子进程附加到调试器。

您能否分享重现此问题的详细步骤?如果只使用“启动而不调试(Ctrl+F5)”,该项目是否成功编译?如果未命中断点且项目编译正常,则在输出窗口中是否会收到任何有用的消息?在调试模式下,将鼠标放在未命中的断点上,或单击调试菜单->窗口->模块窗口,您是否收到任何消息?@Eddie MSFT是的,我可以成功编译并运行它,并且我可以在clang项目中的断点上断开,但不能在其他静态链接库(例如clangParse)中断开。我很确定控制流应该通过我设置的断点。你能启用异常设置窗口吗,如下链接:。在将调用库的代码行(a)中添加一个断点,然后在点击(a)后使用“Step Into(F11)”对其进行调试,这样您就可以一步一步地调试应用程序,收集消息。请选中“工具->选项->调试”下的“如果源不可用则显示反汇编”选项。如果仍然没有消息,你能分享一个简单的示例吗?@Eddie MSFT似乎是那个叮当作响的驱动程序自己调用了
CreateProcessW
,我在那里失去了线索。你能分享重现这个问题的详细步骤吗?如果只使用“启动而不调试(Ctrl+F5)”,该项目是否成功编译?如果未命中断点且项目编译正常,则在输出窗口中是否会收到任何有用的消息?在调试模式下,将鼠标放在未命中的断点上,或单击调试菜单->窗口->模块窗口,您是否收到任何消息?@Eddie MSFT是的,我可以成功编译并运行它,并且我可以在clang项目中的断点上断开,但不能在其他静态链接库(例如clangParse)中断开。我很确定控制流应该通过我设置的断点。你能启用异常设置窗口吗,如下链接:。在将调用库的代码行(a)中添加一个断点,然后在点击(a)后使用“Step Into(F11)”对其进行调试,这样您就可以一步一步地调试应用程序,收集消息。请选中“工具->选项->调试”下的“如果源不可用则显示反汇编”选项。如果仍然没有消息,你能分享一个简单的示例吗?@Eddie MSFT似乎是那个叮当作响的驱动程序自己调用了
CreateProcessW
,而我在那里失去了踪迹。