【发布时间】:2011-04-13 16:11:17
【问题描述】:
我刚刚构建了包含一些 C++ 和 C# 代码的应用程序,并将其安装在另一台机器上。当我连接远程调试器时,我可以调试 C++ 代码,并逐步完成它。但是,当我尝试调试 C# 代码时,似乎没有加载符号。我尝试在 Visual Studio 中调出模块窗格并浏览到正确的 .pdb 文件,但我只是收到一个消息框,告诉我它不匹配。
我不知道为什么会这样。我从这里使用了 chkmatch:http://www.debuginfo.com/tools/chkmatch.html - 报告我选择的 .exe 和 .pdb 匹配。
我已经清除了所有源代码,提取并重建了所有内容,所以我很确定我在 .pdbs 周围没有遇到什么老错误。
我发现了这个相关的问题The Symbol file MyFile.pdb does not match the module 但是,这更多的是做本地符号不匹配。我的本机符号匹配,只是符号拒绝匹配的 .net 程序集。
非常欢迎任何关于检查的建议。
谢谢。
更新:我已经成功加载符号了!但是......解决方案是将符号文件复制到远程计算机并将它们放在与远程计算机上的 .exe 和 dll 相同的文件夹中。 Visual Studio 似乎拒绝从我的本地机器加载它们。如果我在模块窗口中右键单击模块并选择“符号加载信息...”,这将显示它尝试从中加载符号的路径,并且其中包含 pdb 文件所在位置的正确本地路径机器。我查看了 pdb 的安全和访问控制属性,并为每个人授予了所有访问权限。
这真的很令人困惑,我确信过去我已经能够加载符号了。我想不出我所做的任何更改会突然导致它停止工作。
为什么 Visual Studio 拒绝从我的本地计算机加载符号?
【问题讨论】:
-
使用 SDK 中的 signtool.exe。 signtool sign /v /ph /f "myCertfile.pfx" /p myCertfilePassword /t "timestamp.verisign.com/scripts.timestamp.dll" MyExeToSign.exe
-
我会尝试禁用签名并重新开始看看会发生什么。
-
好吧,也许不是签名。 VS 仍然坚持符号不匹配。
-
我不明白这个问题。只签署发布版本,而不是调试版本。
-
对不起,我认为我在关于签名的问题中的原始评论是红鲱鱼。我尝试在不签署文件的情况下进行调试,但没有效果。它仍然不会加载符号。