【发布时间】:2011-12-07 09:16:40
【问题描述】:
我尝试在 Visual Studio 10 中调试程序,但遇到断点问题。我把*.dll文件对应的*.pdb文件放到同一个目录下。但是在检查模块时,我看到每个 DLL 文件都被签名为Cannot find or open the PDB file。
我该如何解决这个问题?如何检查 *.pdb 文件的预期位置?
【问题讨论】:
标签: visual-studio-2010 debugging dll pdb
我尝试在 Visual Studio 10 中调试程序,但遇到断点问题。我把*.dll文件对应的*.pdb文件放到同一个目录下。但是在检查模块时,我看到每个 DLL 文件都被签名为Cannot find or open the PDB file。
我该如何解决这个问题?如何检查 *.pdb 文件的预期位置?
【问题讨论】:
标签: visual-studio-2010 debugging dll pdb
模块(Ctrl-D、M)是整理正在发生的事情的好地方,因此您处于正确的区域。
右键单击您希望找到 pdb 的模块/dll,然后选择 Symbol Load Information
它应该在与您的 dll 相同的目录中开始查找,如果找到 pdb 将加载它或告诉您 pdb 文件与 dll 不匹配。
【讨论】:
转到调试 -> 选项和设置 -> 调试 -> 符号,检查符号位置下的 Microsoft 符号服务器。见附图。
【讨论】:
我在 VS2013 中遇到了类似的问题……与 PDB 文件和 IISEXPRESS 有关。我尝试了几件事并最终通过这样做解决了它:
工具 > 选项 > 调试 > 符号,然后按“清空符号缓存”按钮
在重新运行我的应用程序时,Visual Studio 需要一段时间来重新加载所有符号,但它最终确实这样做了,并且问题得到了解决!
【讨论】:
就我而言,我正在调试一个单击一次的 Windows 应用程序。在模块的Symbol Load Information 中,它告诉我 pdb 与当前附加的图像不同步。我必须查看整个列表,而不仅仅是顶部或底部的项目,以获得错误文本。
这告诉我重新编译并重新发布我所附加的内容,这样两者就会匹配。 这导致模块列表显示为我正在调试的程序集已加载符号,然后继续调试问题。
【讨论】:
AssemblyLoadContext.LoadFromAssemblyName。我原以为程序会从项目的 bin 文件夹中加载 .dll,但我错了。相反,它首先搜索另一个文件夹,其中隐藏了 .dll 的过时版本(我不知道)。这使得 .pdb 不匹配,因此即使我手动尝试将其指向那里,它也不会加载。
更改项目目录,就像您在 Windows 系统目录中运行/调试代码一样,它不会以管理员权限执行,
在我的情况下,我将我的项目保存在 C: 驱动器中,当我执行代码时,我抛出访问冲突以读取输入数据错误,然后我从不同的位置尝试它,它工作正常
& 你也必须加载模块
【讨论】: