【发布时间】:2011-07-15 15:33:10
【问题描述】:
我想使用调试符号,但收到以下错误:
在此文件夹中找不到匹配的符号文件
这是什么问题,如何解决?
【问题讨论】:
标签: c# visual-studio debugging
我想使用调试符号,但收到以下错误:
在此文件夹中找不到匹配的符号文件
这是什么问题,如何解决?
【问题讨论】:
标签: c# visual-studio debugging
我遇到的一件事是因为在引用代码所在的项目上调试已关闭。就我而言,我做了一个名为“Developer”的新配置,默认情况下调试是关闭的。
【讨论】:
netcoreapp2.0 更改为 net4.7 后,调试不再起作用。但是,将 ...-> Advanced -> Output --> Debug Information: 从 portable 更改为 full 修复它。谢谢!
pdb 文件时,我得到了那个臭名昭著的错误。
我遇到了与@DmainEvent 相同的问题。显然我使用的dll与我刚刚编译的pdb版本不同,所以我收到了错误消息。
如果您遇到此问题,请尝试使用同一编译运行中的 dll 和 pdb。
【讨论】:
我得到的错误是“在这个文件夹中找不到匹配的符号文件”即使在 DLL 和 PDB 都可用并一起构建之后,调试 => 模块窗口也是如此,所以我无法调试到目标 DLL被我的主要项目引用。
在此处发布此内容以帮助某人浏览目标 DLL 的“混合平台”构建。我做了两件事来解决这个问题:
在使用目标 DLL 的解决方案中,取消选中 Tools => Options => Debugging => General => Enable Just My Code (JMC) 中的“Just My Code”。
在相关项目属性中的目标 DLL 解决方案中勾选“启用本机代码调试” => 调试。
【讨论】:
Enable native code debugging 未选中它仍然有效;第三次尝试启用Just My Code 并且仍然有效;关键是 PDB + DLL 是一起构建的,我想。
我尝试了所有可能的解决方案,最终当我禁用Properties > Debug 的Debugger engines 下的选项Enable native code debugging 时它起作用了。
【讨论】:
我遇到了这个问题,答案很简单。
Visual Studio 有两个可以创建 .pdb 文件的项目级设置。
您希望 #1 进行调试。忘记#2。 为文件 #2 指定与文件 #1 不同的名称以解决此错误。
我不知道为什么微软将 #2 指定为 .pdb 文件。这只是令人困惑。
【讨论】:
我已经修复了我的调试符号,使用这个工具强制它们匹配:
所以,我的问题是我试图调试我的项目,而调试器无法介入内部 nugets 源。我有nuget项目的源文件。视觉工作室仍然不接受我试图展示的 pdb 文件。 显示完全相同的错误:
在此文件夹中找不到匹配的符号文件
所以,我所做的就是将它添加到 nugets 项目的 .proj 文件中:
<DebugType>full</DebugType>
并使用重建选项再次创建了 dll 和 pdb 文件。 在我运行的命令行中:
.\ChkMatch.exe -m name_of_your.dll name_of_your.pdb
它是这样说的:
正在写入调试信息文件... 结果:成功。
大成功! 所以,接下来,我将这个 dll 引用到我试图调试的项目中。当我尝试再次加载符号时,我工作了。
希望对你有帮助。
【讨论】:
如果没有关于您正在做什么的更多详细信息,很难超越“调试器正在寻找与已编译代码匹配的符号文件,但在已编译代码所在的文件夹中找不到一个符号文件。”
需要考虑的一些事情:
如果您想要更好的答案,请考虑澄清您的问题。尤其是“我想使用符号”是什么意思。
【讨论】:
嗯,解决方案取决于您的具体问题。我尝试了所有可能在 Stackoverflow 和其他网站上找到的东西。我关注的线程之一是this。那也没有帮助。 当我注意到我的 executable 项目不包含对我要调试的 library 的引用时,问题立即得到解决。所以我只是添加了对该项目的引用。
**PS: ** 这个问题也可能出现,因为可执行程序集引用的程序集可能与引用中的不匹配。因此,在这种情况下,您只需删除已经存在的引用并添加新的引用。
希望这会有所帮助!
【讨论】:
同样的情况发生在我身上,因为项目的.pdb文件没有复制到debug\Bin文件夹,所以无法从.pdb文件中加载符号。
您必须重新构建项目并手动将符号(.pdb 文件)复制到可执行项目的debug\Bin 文件夹中。
【讨论】:
我试图为我们本地开发服务器上发布的已安装 nuget 包加载符号。我不得不卸载并添加一个从代码构建的普通参考。这对我有用。只需记住在完成调试后再次安装原始 nuget 包。
【讨论】:
如果它适合您,请尝试在 dll 本身中嵌入调试符号,以便自动加载符号。这在 netcoreapp3.1 和 net5.0 中对我有用:
<DebugType>Embedded</DebugType>
<EmbedAllSources>True</EmbedAllSources>
请注意,您可能会在文档中找到此内容:
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
但它不起作用。
【讨论】:
我在 Visual Studio 2022 中遇到了这个问题,在这里尝试了大部分答案。通过切换回 Visual Studio 2019 修复,似乎是 2022 年的一个错误。
【讨论】:
我发现这是因为属性 => 调试 => 启动操作设置为启动外部程序而不是项目。所以新生成的pdb文件不匹配,因为实际的exe是错误的。
【讨论】:
我最近也遇到了这个问题。 可以通过选择 MyProject->Properties->Linker->Debugging->Generate Debug Info->“优化调试 (/DEBUG)”来修复它。
【讨论】: