【问题标题】:Visual Studio 2012 not generating symbol (.pdb) filesVisual Studio 2012 不生成符号 (.pdb) 文件
【发布时间】:2016-12-21 17:41:44
【问题描述】:

我在 VS2012 中有一个项目无法调试;如果我设置断点,它会告诉我
“当前不会命中断点。没有为此文档加载任何符号”。

在项目的属性中,Generate debug info设置为full,优化被禁用(所以符号文件应该被生成自动地...)。 在调试模式下检查模块时,dll 的路径位于 Temporary ASP.NET 文件夹中,但在该位置找不到 pdb 文件。更加具体;在上面提到的文件夹中,有三个子文件夹(每个都命名为看似随机的十六进制字符串),在这些文件夹中的 一个 中,dll 和 pdb 为每个模块很好地配对,但是在其他两个文件夹中文件夹情况并非如此,因为只有 dll 存在。不幸的是,VS 正在查找后一个文件夹,因此无法找到符号文件。
每当我尝试为 dll 手动加载符号文件时,它都会告诉我符号文件不是正确的;我认为它必须来自与 dll 完全相同的构建。所以我知道把它们放在哪里,但我不知道它们在哪里......

由于这个文件夹是隐藏的(它位于我的 AppData 文件夹中)并命名为“临时...”,我假设文件是​​自动加载的,我不应该乱用它。
那我该怎么办?
我知道这是一个非常模糊的问题,但是当涉及到这样的事情时我非常无知,所以非常感谢一些一般性的指导!否则,请随时提出更详细的问题 - 我会尽力回答。

PS 我知道这里已经多次提出了非常相似的问题,但是浏览了很多问题,我仍然没有找到适合我的解决方案,所以我想了一个新问题,我可以给你我的情况的确切细节是合适的 - 如果不是这样,请告诉我,我会确保删除这篇文章:)

【问题讨论】:

  • PDB 文件的位置编码到二进制文件中。通常指向项目的 obj\Debug 目录。因此,在与 dll 相同的位置没有 pdb 的副本通常不是问题。使用 Debug > WINdows > Modules > 在列表中找到 DLL > 右键单击​​ > Symbol Load Information。告诉您调试器在哪里查找 PDB 文件。
  • 好的,谢谢!尽管在重新定位它们之前,我仍然有实际定位真正的 pdb 文件的问题;我现在知道它们应该在哪里,但我不知道它们实际上在哪里......我肯定在过去的某个时候移动了一些文件,因为它们似乎不太可能刚刚消失......

标签: visual-studio debugging visual-studio-2012 visual-studio-debugging debug-symbols


【解决方案1】:

1)请检查哪个pdb文件或符号文件没有真正加载,您可以访问调试模块窗口并查找信息。或者您可以访问“输出”窗口,它会显示未找到哪个 pdb 文件。

(2)在TOOLS->Options->Debugging->Symbols下启用Microsoft Symbol Servers。

(3) 清理并重建解决方案,确保没有编译错误,然后重新调试您的应用程序。当然你也可以访问符号服务器的缓存文件夹,看看里面是否有之前没有找到的pdb文件。

(4) 如果您找到 pdb 文件,按照 Hans Passant 的建议,您也可以在 Modules 窗口中手动加载符号:

1.在调试模块窗口中右击,选择Load Symbols From,然后点击Symbol Path或Microsoft Symbol Servers。

如果调试器没有找到符号,它将显示“查找符号”对话框。

2.在“查找符号”对话框中,找到要加载的符号文件。 符号文件是 .pdb 文件或 .dbg 文件。

【讨论】:

  • 感谢您的建议!不幸的是,他们似乎都没有工作。大约 80% 的符号没有加载;其中一些与 Microsoft 相关,其中一些是“我自己的”。缓存是空的,尽管我之前尝试过缓存符号以提高性能。手动加载它们的问题是,我有 10-20 个符号文件来自以前的版本等,它们似乎不起作用,所以我假设 pdb 文件必须来自与 dll 完全相同的构建 -即使源代码相同..
  • @Rasmus Eskesen,工具->选项->调试,禁用“要求源文件与原始版本完全匹配”,然后再次重新调试您的应用程序。或者如果您使用以前的版本,则重新编译并生成匹配的符号。
  • 很抱歉回复晚了,但不幸的是没有运气。不过建议很好。
  • @Rasmus Eskesen,为了清楚地说明这个问题,(1)如果你在本地机器上使用 windows research,你能找到 pdb 文件吗?(2)哪个符号/pdb 文件产生了这个问题?如果它是参考,您是否使用相同的 .NET 框架(如 .NET 4.5 和相同的平台目标(任何 CPU/x86/X64))对其进行编译?(3)如何在新路径中为该项目创建新解决方案(请也以管理员身份运行 VS)?
  • @Rasmus Eskesen,这个问题呢?你有任何关于它的最新信息吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 2023-03-04
相关资源
最近更新 更多