使用Visual Studio 2010调试C ++项目时,找不到crt的源代码。当我试图进入一个这样的模块时,它显示“No Source Available”。它也没有为Browse
提供选项,以便我可以帮助它找到源位置。
在Option Solution-> Common Properties-> Debug Source Files下,更新了crt源的正确位置。
由于缺乏crt的源代码级调试,我必须通过反汇编来阅读这个问题变得越来越困难。
任何人都可以帮我弄清楚可能出现的问题吗?
请注意**我正在通过Visual Studio使用外部构建系统来构建我的C ++项目。
在汉斯的指导下,我如何缩小问题范围。
虽然断点仍处于活动状态,但我列出了所有符号加载信息。我意识到msvcr100d.i386.pdb
与dll不匹配。它实际上一直都是从微软的公共符号存储中取出,当然这些符号被剥离了。这就是我问题的根本原因。
答案 0 :(得分:1)
您可以在中断活动时使用Debug + Windows + Modules查看问题的原因。右键单击msvcr100d.dll并选择“符号加载信息”以获取有关调试器使用的.pdb的信息。
由于某种原因,Microsoft Symbol Server提供了一个剥离了源信息的服务器。这可能是故意的,与DLL的服务和安全补丁与vc / crt / scr中的源代码不同步有关。您可以通过发布到connect.microsoft.com
获得真实答案而不是猜测一种解决方法是使用/ MTd而不是/ MDd编译代码,如果可能的话。项目+属性,C / C ++,代码生成,运行时库设置。然后调试器将使用vc / lib中的.pdb文件。请密切关注球,调试代码而不是CRT。
答案 1 :(得分:0)
您可以在安装文件夹VC \ CRT \ SRC子文件夹中找到CRT的来源。
如果它们不存在,安装VS2010时是否安装了它们? (不确定你是否真的可以选择这个)。