Visual Studio按需要将项目编译为dll,但是当我用dumpbin检查这些dll时,他们的pdbs没有条目,这可能是我无法调试任何这些dll的原因我在运行时加载它们,它们的pdbs永远不会加载。如何让VS写这些路径?
Visual Studio,C ++。
编辑: C ++ / General / Debug信息格式设置为“Program Database(/ Zi)”,Linker / Debugging / Generate Debug Info为“Yes(/ DEBUG)”,我认为这是正确的。
答案 0 :(得分:2)
如果dumpbin /headers
在调试目录中没有显示任何条目,则可能是因为您未在编译和链接时启用调试信息生成。您应该检查 C ++ / General / Debug信息格式和链接器/调试/生成调试信息选项。
如果设置了这些选项,则可以检查Visual的输出目录中的dll和pdb是否匹配。使用Windows调试工具,您可以使用命令symchk /v yourdll /s folder_containing_pdb
来验证调试器引擎是否可以找到pdb。它将检查dll是否不包含调试信息,在这种情况下,您在Visual Studio中缺少选项,或者pdb文件未完成。
您还可以使用命令!sym noisy
来使用Windbg。 See here for detailed instructions.
答案 1 :(得分:0)
在dll中未引用pdbs,Visual Studio会搜索它们。如果它们在同一目录中,它应该找到它们。
答案 2 :(得分:0)
您可以根据this article指示Visual Studio查找符号的位置。总结:
单击文件上的符号文件路径 菜单显示,设置或附加到 符号路径。
有关如何使用符号的更全面的概述是here。
在Output
窗口中应该有关于DLL加载时发生的事情的信息。也许这不是你期望的版本?