使用Visual Studio 2010调试C++项目时,它找不到crt的源代码。当我试图进入一个这样的模块时,它显示“No Source Available”。它也不提供Browse
的选项,以便我可以帮助它找到源位置。没有msvcr100d.dll!的源代码__ CrtDumpMemoryLeaks()
在选项解决方案 - >通用属性 - >调试源文件下,更新了crt源的正确位置。
由于缺乏crt的源代码级别的调试,我必须通过反汇编来阅读这些变得越来越困难。
任何人都可以帮我弄清楚可能会出错吗?
请注意**我通过Visual Studio使用外部构建系统来构建我的C++项目。
在汉斯的指导下,我如何缩小问题范围。
虽然断点仍然有效,但我列出了所有符号加载信息。我意识到msvcr100d.i386.pdb
与dll不匹配。它实际上一路走下来从微软的公共符号存储中获取,当然这些符号被剥离掉了。所以这是我的问题的根源。
这里是在social.msdn
谢谢您的回应。部分改变编译器开关会有点困难,因为它可能会改变行为,并且完全因为我正在使用外部构建系统。但是这样说,你所说的是对我有意义的。时间戳不匹配可能是可能的。我认为connect.microsoft.com会是这个查询的理想选择。再次感谢你。 – Abhijit 2012-04-04 12:38:10
这不是时间戳不匹配。该.pdb有所有源文件和行信息被剥离。对于在发布模式下构建的DLL,这是非常典型的,例如,Windows DLL的所有.pdbs都是以这种方式发布的。一点都不,因为你没有任何源代码。但它不是一个发布模式DLL,你有源:)可能是一个愚蠢的错误,连接可以告诉你。 – 2012-04-04 12:43:36
宾果:-)你是对的。我想在pdb和dll之间不匹配的时间戳,但不相信他们实际上剥离了这些符号。这里是我如何从调试输出'Loaded'C:\ Windows \ SysWOW64 \ msvcr100d.dll',加载符号(去除源信息)来验证它。 – Abhijit 2012-04-04 12:48:54