为啥 Visual Studio 在调试时会跳过我的方法?

Posted

技术标签:

【中文标题】为啥 Visual Studio 在调试时会跳过我的方法?【英文标题】:Why is Visual Studio skipping over my method when debugging?为什么 Visual Studio 在调试时会跳过我的方法? 【发布时间】:2014-03-01 01:47:27 【问题描述】:

我正在尝试调试库中的一个方法(如果重要的话,它是通过 NuGet 安装的),而 Visual Studio 正在跳过它并显示以下消息:

Step into:不带符号的单步方法 'Cpi.Net.SecureMail.CryptoHelper.FindCertificate'

我在调试设置中添加了一个符号服务器源,当我第一次调试程序时,它告诉我它正在下载这个库的符号。我已验证符号确实已下载,因为它们显示在我的符号缓存目录中。

感谢 SLaks,我现在知道从符号服务器下载的 PDB 显然是过时的格式。如果我直接从 TeamCity 的构建工件中检索 PDB,则调试工作正常。

看来,不知何故或出于某种原因,PDB 文件正在通过 NuGet 打包过程或通过符号服务器下载过程 (ProGet) 进行更改。

现在,问题的范围显然已大大扩大。

【问题讨论】:

检查调试,模块窗口。 嗯。以前从未调查过。它说“PDB 格式已过时。” 有人想知道为什么 PDB 格式会过时。 @Mark:你试过删除你的 pdb 文件然后重新编译吗? @AndyG 好吧,就像我更新了要说明的问题一样,如果我直接从库的构建位置(TeamCity)获取库的 PDB,它就可以工作。我还从 TeamCity 的 NuGet 包副本中获取了它,它也有效。显然 ProGet 正在以某种方式破坏它? 【参考方案1】:

事实证明,ProGet 确实在修改 PDB 文件,以便让它指向源服务器而不是源文件的本地构建文件夹。出于某种原因,ProGet 正在创建一个 Visual Studio 不喜欢的 PDB。 Inedo 和我还不能确定原因。

【讨论】:

Inedo 意识到了这个问题:inedo.com/support/questions/1411 我建议您直接联系他们(通过电子邮件或实时聊天),让他们知道您遇到了同样的问题。受影响的人越多,他们解决问题的可能性就越大。

以上是关于为啥 Visual Studio 在调试时会跳过我的方法?的主要内容,如果未能解决你的问题,请参考以下文章

为什么Visual Studio调试器会跳过有效行?

为啥 Visual Studio 在调试时会以不同的方式处理 ANSI Escape 代码?

Visual Studio 跳过代码行

为啥在加载到 XMLTABLE 时会跳过 XML 文档的第 40,000 个字符?

为啥 Python for 循环在遍历列表副本并进行删除时会跳过元素? [复制]

为啥我的时间 UILabel 从暂停状态恢复播放时会跳过 2 秒?