目前不会命中 VS 2008 断点。没有为此文档加载任何符号

Posted

技术标签:

【中文标题】目前不会命中 VS 2008 断点。没有为此文档加载任何符号【英文标题】:VS 2008 breakpoint will not currently be hit. No symbols have been loaded for this document 【发布时间】:2011-07-08 01:45:53 【问题描述】:

我正在努力克服这个障碍,我非常希望 SO 上的某个人能提供帮助。

当我在我的 类库 项目中设置断点时。它显示为一个正常的断点。当我开始调试我的解决方案时,里面的breakpoint becomes hollowed out and has a yellow triangle with an exclamation point。当我平移断点时显示的工具提示是,“断点当前不会被命中。没有为此文档加载任何符号。

这个项目不是一个 ASP.NET 应用程序,它只是一个 winForms 应用程序。

我已经接管了解决方案中包含多个项目的现有 winForms 应用程序。我已经在调试模式下构建并运行了项目。我可以在某些项目的断点处停下来,但是,我无法在其他项目中打断点,特别是我的 类库 类型的项目。

到目前为止我做了什么:

我已删除所有调试和发布文件夹, 我已经删除了obj文件夹,之后又重新构建了解决方案。 我已经重启了VS2008 IDE。 我已重新启动计算机。 我检查了配置管理器中的解决方案,以确保我的 类项目 包含在调试版本中,而且确实如此。 我已经检查了 dll 的调试/模块,但我并没有尝试引用 dll。

此外,我已按照 SO 帖子中概述的故障排除步骤进行操作:

the breakpoint will not currently be hit no symbols loaded

VS 2010, NUNit, and “The breakpoint will not currently be hit. No symbols have been loaded for this document”

The breakpoint will not currently be hit. No symbols have been loaded for this document.

Can't debug - “The breakpoint will not currently be hit. No symbols have been loaded for this document”

Fixing “The breakpoint will not currently be hit. No symbols have been loaded for this document.”

此外,我在Google 和其他位置阅读了许多帖子,其中没有一个符合我的特定需求。

其中一些帖子是:

Visual Studio 2008 "The breakpoint will not be currently hit. No symbols have been loaded for this document"

The breakpoint will not currently be hit. No symbols have been loaded for this document

Breakpoint will not currently be hit. No symbols loaded for this document.

Debugger problem "The breakpoint will not currently be hit. No symbols have been loaded for this document

The Breakpoint will not currently be hit. No Symbols have been loaded for this document.

我阅读的所有帖子都提供了非常丰富的信息,但没有一个建议的解决方案适合我的特定需求。如果有必要提供更多信息,请告诉我。我有更多的链接可以提供作为参考,这些链接没有奏效。以及我为尝试解决此问题而采取的其他步骤。

我发布此后续内容是为了让每个人都知道。我按照@Hans @ 的建议调用了有问题的项目文件。

我将一个暗淡的框架设置为 form = new ProjectInQuestion.FormInQuestion

现在在调试中加载了程序集--> Windows->模块

新问题比我原来的问题更令人困惑。我的断点看起来不错,但被跳过了。断点处没有明显的错误。

【问题讨论】:

针对我的具体问题的解决方案是通过在断点之前专门调暗一个实例来实例化我想要调试的 dll 实例。 【参考方案1】:

我经常遇到这种情况,就像你说的断点在加载 DLL 之前是不活动的。但这并不重要,因为它必须在代码到达该点之前加载 DLL。我的断点以这种方式开始,但它们总是被命中。

【讨论】:

我注意到断点只有在程序集被特别引用时才可用,如果 dll 是使用接口动态加载和引用的,则断点永远不会被命中。 我唯一能做的就是跳过断点是进入项目属性>编译选项卡>高级编译选项>将生成调试信息设置为“无”。我想我在引用的链接中没有看到。 我有一个函数可以在运行时动态加载我的程序集,当它们被使用时,这可以防止加载当前未使用的程序集并节省内存。由于这些程序集以这种方式加载,因此无法调试。 我虽然运行时还是这样做了。我知道在我的项目中,任何程序集都不会加载,直到有一个需要加载它的引用。这就是为什么在您执行 frm = New FormInQuestion 之前断点不会显示的原因。【参考方案2】:

这可能是一个老问题,但我想在找到解决这个问题的方法后回答它,因为它是关于这个主题的最完整的问题之一。

简介

我的项目是一个 ASP.NET 应用程序,但基本问题也会发生在 WinForms 上。当程序集输出中缺少 DLL 时,就会出现问题。但是,如果您引用的 DLL 然后引用了不在程序集中的另一个 DLL,则会发生同样的异常。由于操作系统加载 DLL 的方式,引用的 DLL 必须在环境路径中,而不是在您的输出程序集中。

项目 A 引用 DLL D。 DLL D 引用 DLL X。 DLL D 可能在您的输出程序集中。 DLL X 必须在您的环境路径中。

这个问题的核心原因在于操作系统在运行时加载本机 DLL 的方式。本机 DLL 使用以下逻辑加载,其中不包括 >Temporary ASP.net Files 或应用程序 /bin 文件夹。如果本机 DLL 不包含在带有 .EXE >文件的 /bin 文件夹中,或者如果 DLL 不在路径环境变量中,那么任何 .Net 应用程序中也会出现此问题。

个人解决方案

我使用了一个名为 DivaAPIWrapper.dll(C# 的托管 DLL)的 DLL。但是,我知道 DivaAPIWrapper.dll 需要 DivaAPI.dll(非托管 C++)才能运行。我将 DivaAPI.dll 放在所有输出路径中,但我一直收到此错误。只有在我将 DivaAPI.dll 放入我的环境路径 (C:\windows\Microsoft.Net\Framework\v2.0.50727) 之后它才起作用。 请注意:如果您使用的是较新版本的 .NET 框架,您的路径可能会有所不同!

Jerry Orman 的完整解决方案

在此处查看链接:http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx

【讨论】:

这听起来像是我问它时正在寻找的答案!感谢您的回复。【参考方案3】:

我最近在附加到正在运行的进程时发生了这种情况。问题是调试选项设置为

附加到:本机代码

就我而言,它必须是:

附加到:托管代码

【讨论】:

【参考方案4】:

检查您没有更改编译此项目的目标处理器。我有,当我把它改回来时,一切都恢复了。显然处理器的变化使它“与原来的不同”

【讨论】:

【参考方案5】:

我在 Vb.net-forms 应用程序中遇到了与 VS2008 相同的问题,我在另一个项目中调用了一个 dll,加载到同一个项目组中。我找到了这个简单的解决方案:我在 form_load 事件中加载了一个实例,例如 将 pmg 调暗为新的 PMGExport.PMGExportNeu。

【讨论】:

【参考方案6】:

我最近发现的一件事,效果很好!!!

托管应用程序(调用要使用的 dll 的应用程序)必须包含以下行:

<supportedRuntime version="v4.0"/>

在“WhateverApplicationItIs.exe.config”文件的&lt;configuration&gt; 部分内。

示例:(将“...”视为文件中包含的任何内容并保持原样)

<configuration>
    ...
    <supportedRuntime version="v2.0.50727"/>
</configuration">

PS:尝试将此版本与项目属性中设置的目标框架匹配。我相信 2.0.50727 是 3.5 框架的一个很好的尝试,4.0 是 4.0 框架的一个很好的尝试。

对我来说,它只是解决了我试图在不同应用程序中调试的两个不同 DLL。

【讨论】:

在 VS2008 中,我收到“未加载任何符号”消息,并且无法调试我的 WiX C# 自定义操作。向导为我创建的 CustomAction.config 包含 v4.0 和 v2.0.50727 的supportedRuntime 标签。但只要我注释掉 v4.0 标记并重建,我就能够调试自定义操作。【参考方案7】:

我也遇到了同样的问题,从互联网上找到了很多解决方案,但下面列出了适合我的解决方案:

这是由于我的应用程序是在框架版本 4.0 中制作的,并且我试图附加版本低于 v2.0 的进程,因此请确保您的框架版本具有托管代码版本,如下所示。

【讨论】:

【参考方案8】:

请检查工具栏(运行按钮旁边)上的解决方案配置器模式是否设置为“调试”而不是“发布”

【讨论】:

这是一个可能的原因,因为它已经使用了两年,我不再使用这个软件,而且我不再可以使用它。感谢您的回答。【参考方案9】:

希望这会有所帮助...

我引用了 bin\Release 文件夹中的 DLL,即使我处于调试模式。

我将 DLL 复制到 bin\Debug 文件夹,当我运行 VS 时,断点被命中。

【讨论】:

【参考方案10】:

请检查工具栏(运行按钮旁边)上的解决方案配置器模式是否设置为“调试”而不是“发布” 为我工作谢谢

【讨论】:

【参考方案11】:

在开始调试之前,请确保在 Visual Studio 中选择了 debug mode

检查下拉菜单,靠近 Visual Studio 中的 播放 按钮。

【讨论】:

【参考方案12】:

试试这个, 在Vs 2008中,转到工具->选项->调试->常规->未选中/禁用'要求源文件与原始版本完全匹配

【讨论】:

【参考方案13】:

我在vs2010上遇到同样的问题,我通过流程步骤解决了:

    右键项目 选择属性 选择 c/c++ ->常规 设置调试信息格式为program Database(/ZI) 检查链接器->debugging Generate Debug info 是。

【讨论】:

以上是关于目前不会命中 VS 2008 断点。没有为此文档加载任何符号的主要内容,如果未能解决你的问题,请参考以下文章

vs2015当前不会命中断点因为还没有

无法调试 - “断点当前不会被命中。没有为此文档加载任何符号”

vs2010 C# 当前不会命中断点。还没有为该文档加载任何符号。 求解决

断点当前不会被命中。没有为此文档加载任何符号

“断点目前不会被击中。没有为此文档加载任何符号。” - .pdb 从错误的地方加载?

如何解决“当前不会命中断点。没有为此文档加载任何符号。”警告?