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


77

我想使用调试符号,但是收到以下错误:

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

这是什么问题,如何解决?

Answers:


39

我碰到的一件事是因为在引用代码的项目所在的地方关闭了调试功能。就我而言,我做了一个名为“ Developer”的新配置,默认情况下调试已关闭。

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

4
对于dotnet core 2.0控制台应用程序,在将其目标框架从更改netcoreapp2.0为后net4.7,调试不再起作用。但是,更改...->高级->输出->调试信息:portable进行full修复。谢谢!

1
谢谢,如果在NetFX项目中使用NetStandard引用,则也需要这样做。
乔纳森·迪金森

那对我没有用。当我选择pdb文件时,得到那个臭名昭著的错误。
Shimmy Weitzhandler

这不是我的解决方案。但是我在Resharper插件中找到了一个解决方案。在模块窗口中,右键单击,Resharper具有从参考dll生成代码的选项。
Ganesh Jadhav

9

我有与@DmainEvent相同的问题。显然,我使用的dll与我刚刚编译的pdb版本不相同,因此出现了错误消息。

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


有完全一样的问题。我正在手动复制pdb,但它与正在执行的预编译C ++ dll不匹配。我想我应该知道的更好,但这确实成功了。
肖恩·斯凯利

7

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

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

  1. 链接器:配置属性->链接器->调试->生成程序数据库文件=“ xxxx.pdb”
  2. 编译器:配置属性-> C / C ++->输出文件->程序数据库文件名=“ yyyy.pdb”

您要调试#1。忘记#2。为文件#2提供与文件#1不同的名称以解决此错误。

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


20
这个问题用标签c#标记,因此这些设置不适用
flipchart

4
就我而言,这些设置仅在主应用程序是托管代码并且尝试调试由包装程序执行的本机代码时才相关。当我直接通过本机c ++测试器应用程序调试本机c ++时,尽管pdb文件被覆盖,它还是以某种方式神奇地获取了调试信息。因此,这些设置确实适用,并帮助我解决了问题。
Peuczynski

有关设置两个混淆的.pdb文件路径的建议适用于本机代码项目。只是,我只是将两个路径名#1和#2设置为相同。
rtischer8277

6

我尝试了所有可能的解决方案,最后,当我禁用的Enable native code debugging下的选项时,它终于起作用Debugger enginesProperties > Debug


检查此标志也对我有用。症状就像描述的海报一样。
Timmos

5

我得到的错误是即使在DLL和PDB都可用并一起构建后,在Debug => Modules窗口中“在此文件夹中找不到匹配的符号文件”,所以我无法调试到我引用的目标DLL中主要项目。

如果可以帮助有人使用“混合平台”构建目标DLL进行浏览,请在此处发布。我做了两件事来克服这个问题:

  1. 在使用目标DLL的解决方案中,在工具=>选项=>调试=>常规=>启用我的代码(JMC)中取消选中“仅我的代码”。

  2. 在相关项目属性=>调试中,在目标DLL解决方案中选中“启用本机代码调试”。


1
请格式化您的答案以使其更具可读性(粗体,斜体,列表,代码缩进等)
Morse

1

如果没有关于您正在执行的操作的更多详细信息,那么很难超越“调试器正在寻找与编译后的代码匹配的符号文件,而在编译后的代码所在的文件夹中找不到该文件。”

需要考虑的一些事情:

  1. 您是否正在创建符号作为编译的一部分?(检查项目属性)
  2. 您是否正在使用符号服务器(如果是,它是否指向正确的位置)
  3. 这是来自第三方的编译代码吗?在这种情况下,您显然拥有源代码,请自己编译。

如果您想要一个更好的答案,请考虑澄清您的问题。尤其是您所说的“我要使用符号”是什么意思。


我想使用符号服务器来使用

62
我不断收到一个错误消息,告诉我在此文件夹中未找到符号文件...当我用两只眼睛可以看到在该文件夹中找到了具有相同名称的符号文件(pdb)文件时。那告诉我文件不一样。但是,当我刚刚编译该东西并获得一个全新的pdb文件时,怎么办?这是在bin文件夹中。
SoftwareSavant

@SoftwareSavant找到答案了吗?
RJP

1

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

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

希望这可以帮助!


然后如何在Visual Studio中向项目添加所谓的“引用”?
查尔斯

1

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

chkmatch工具

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

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

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

<DebugType>full</DebugType>

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

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

它说:

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

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

希望能帮助到你。


0

我发现这是因为属性=>调试=>启动操作被设置为启动外部程序而不是项目。因此,新生成的pdb文件不匹配,因为实际的exe是错误的文件。


0

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

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

配置管理器


0

因为项目的.pdb文件尚未复制到debug\Bin文件夹,所以无法从.pdb文件加载符号,这对我来说也是一样。

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


0

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


-2

我最近也有这个问题。可以通过选择MyProject-> Properties-> Linker-> Debugging-> Generate Debug Info->“优化调试(/ DEBUG)”来修复它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.