在此文件夹中找不到匹配的符号文件

时间:2011-03-15 09:24:30

标签: c# debugging

我想使用符号,但我收到此错误:

  

在此文件夹中找不到匹配的符号文件

问题出在哪里?

13 个答案:

答案 0 :(得分:28)

我遇到的一件事是因为在代码所在的项目中调试已关闭。在我的例子中,我创建了一个名为“Developer”的新配置,默认情况下调试已关闭。

  1. 右键单击有问题的项目
  2. 属性
  3. 构建
  4. 高级(右下角)
  5. 将调试信息设置为完整
  6. 重新编译

答案 1 :(得分:6)

我和@DmainEvent有同样的问题。显然我使用的dll与我刚刚编译的pdb版本不同,所以我收到了错误消息。

如果您遇到此问题,请尝试使用同一编译运行中的dll和pdb。

答案 2 :(得分:5)

我尝试了所有可能的解决方案,最后当我在Enable native code debugging的{​​{1}}下禁用选项Debugger engines时,它才有效。

答案 3 :(得分:4)

我遇到了这个问题,答案很简单。

Visual Studio有两个可以创建.pdb文件的项目级别设置。

  1. 链接器:配置属性 - >链接器 - >调试 - >生成     程序数据库文件=“xxxx.pdb”
  2. 编译器:配置属性 - > C / C ++ - >输出文件 - >程序数据库文件名= “yyyy.pdb”
  3. 你想要#1进行调试。忘了#2。 为文件#2提供与文件#1不同的名称以解决此错误。

    我不知道为什么microsoft将#2指定为.pdb文件。这只是令人困惑。

答案 4 :(得分:2)

如果没有关于你正在做什么的更多细节,那么很难超越“调试器正在寻找与编译代码匹配的符号文件,并且在编译代码所在的文件夹中找不到它。”

要考虑的一些事情:

  1. 您是否在编辑中创建符号? (检查项目属性)
  2. 您使用的是符号服务器(如果是,它是否指向正确的位置)
  3. 这是来自第三方的编译代码吗?在这种情况下,当您显然拥有源代码时,请自行编译。
  4. 如果您想要更好的答案,请考虑澄清您的问题。尤其是“我想要使用符号”是什么意思。

答案 5 :(得分:2)

我得到的错误是"在此文件夹中找不到匹配的符号文件"在Debug =>中模块窗口甚至在DLL和PDB都可用并一起构建之后,因此我无法调试到我的主项目引用的目标DLL。

在此处发布此内容,以防有人使用"混合平台"为目标DLL构建。我做了两件事来解决这个问题:

  1. 在使用目标DLL的解决方案中,取消选中" Just My Code"在工具=>选项=>调试=>一般=>启用我的代码(JMC)。

  2. 检查"启用本机代码调试"在相关Project Properties中的目标DLL解决方案=>调试。

答案 6 :(得分:1)

好吧,解决方案取决于您的特定问题。我尝试了在Stackoverflow和其他站点上可能找到的所有内容。我遵循的线程之一是this。那也没有帮助。 当我注意到我的可执行文件项目没有包含要调试的的引用时,该问题立即得到解决。所以我只添加了对该项目的引用。

** PS:**可能还会出现此问题,因为可执行程序集引用的程序集可能与引用中的程序集不匹配。因此,在这种情况下,您只需删除现有参考并添加新参考即可。

希望这会有所帮助!

答案 7 :(得分:0)

我发现这是因为Properties => Debug => “开始操作”设置为“启动外部程序”而不是“项目”。所以新生成的pdb文件没有匹配,因为实际的exe是错误的。

答案 8 :(得分:0)

对于BizTalk(和其他)项目,可能是因为您已经尝试在GAC中调试的程序集版本。当您运行单元测试或按F5进行调试时,将在本地编译新版本。但是,正在使用GAC中的版本,并且新创建的PDB与GAC中的DLL不匹配。

解决此问题的一种方法是使用Configuration Manager取消选择除单元测试项目之外的所有内容的构建,如下所示:

Config Manager

答案 9 :(得分:0)

我也遇到同样的情况,因为该项目的.pdb文件尚未复制到debug\Bin文件夹中,因此无法从.pdb文件中加载符号。

您必须重建项目,然后将符号(.pdb文件)手动复制到可执行项目的debug\Bin文件夹中。

答案 10 :(得分:0)

我已修复调试符号,使用此工具强制它们匹配:

chkmatch tool

所以,我的问题是我正在尝试调试我的项目,而调试器无法进入内部nugets源。我有nuget项目的源文件。视觉工作室仍然不接受我试图向其展示的pdb文件。 显示完全相同的错误:

  

在此文件夹中找不到匹配的符号文件

所以,我所做的就是将其添加到nugets项目的.proj文件中:

<DebugType>full</DebugType>

然后使用rebuild选项再次创建dll和pdb文件。 在命令行中,我运行了:

.\ChkMatch.exe -m name_of_your.dll name_of_your.pdb    

它是这样说的:

  

正在写入调试信息文件...   结果:成功。

成功! 因此,接下来,我将这个dll引用到我尝试调试的项目中。尝试再次加载符号时,我工作了。

希望有帮助。

答案 11 :(得分:0)

我正在尝试为在本地开发服务器上发布的已安装nuget软件包加载符号。我必须卸载并添加从代码构建的常规参考。这对我有用。只要记得调试完成后再次安装原始的nuget软件包即可。

答案 12 :(得分:-2)

我最近也遇到过这个问题。 能够通过选择MyProject-&gt; Properties-&gt; Linker-&gt; Debugging-&gt; Generate Debug Info-&gt;&#34; Optimize for debugging(/ DEBUG)&#34;来修复它。