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

16
我遇到了题目中的错误。我在运行着server 2k3sp2的vs2k8上尝试过删除pdb、cache目录,验证了特定页面的调试设置,但有趣的是其他页面可以正常进行调试,只有当我访问这个页面时才会出现问题。这一定是一个配置问题,但该页面指令看起来像这样: print("<%@ Page Language='C#' AutoEventWireup='true' CodeBehind='MemberSearch.aspx.cs' Inherits='SurencyPortal.EmployerPortal.MemberSearch' Debug='true' %>");
此外,我还注意到,在调试时,如果打开模块窗口,几乎所有符号都显示为“符号未加载”的状态。然而,在查阅下面的msdn文章后,其中一篇MSFT帖子说,如果它是核心的.net dll,则不会加载符号,所以我不担心这个问题。一些微软模块(如System.Enterpricesservices.wrapper.dll)显示感叹号,并显示消息“该模块未以默认加载地址加载”。我不知道为什么会有那个dll,因为我不知道有任何对它的调用。
以下是我尝试过的方法: Breakpoint not hooked up when debugging in VS.Net 2005 http://social.msdn.microsoft.com/Forums/en-US/vbide/thread/557fdedb-268e-48a8-9944-29b2b4e0dec2/#page:3 Bill
6个回答

9
我曾经遇到过类似的问题,那是因为我在项目处于发布模式时尝试进行调试。

4

当我在处理两个不同的网站时,通常会看到这个错误。我有一个网页前端和一个网页服务后端。如果没有运行“站点”的开发服务器,则会收到该错误消息。

这可能不是你的确切问题,然而当我看到这个错误消息时,通常就是这种情况。另一件事情是,如果调试器没有附加到正确的进程上,你可以进行调试 -> 进程附加。


关于附加进程,当我尝试附加进程时,w3wp.exe 是灰色的。只剩下那些看起来不相关的进程了(ccapp、ctfmon、smax4pnp 和 smcgui)。这是否证实了调试器已经附加到了正确的进程上? - Bill Martin
通常当它被灰掉时,说明已经附加了调试器。我无法提供更多帮助,因为我仍在使用VS 2005和.NET 2.0... - Astra

3

在代码中插入一个内联断点语句,确保你实际上正在运行该代码。如果没有停止,则很可能是您尝试调试的代码根本没有被运行,或者您没有使用托管调试器进行调试。

如果您停止了但找不到源代码,则很可能没有模块的pdb文件。检查调用堆栈窗口的顶部,以查看包含您停止的方法的程序集。这是您需要pdb的程序集。模块窗口将显示该程序集在磁盘上的位置。命令行工具“dumpbin -headers assembly.dll”将转储PE头文件。检查Debug目录以查看构建程序集时pdb放置的位置。如果不存在Debug目录,则表示该程序集是没有调试信息构建的。如果是这种情况,则您的问题就是确定为什么特定的程序集是没有调试信息构建的。如果它确实具有调试信息并且存在pdb,但未加载,则意味着调试器未找到pdb,您应该查看tools\options\debug\symbol设置。或者pdb和程序集不匹配。如果时间戳不在1秒内,则它们肯定不匹配。

如果以上内容无法帮助您,请提供更多信息以获取更新。


2
通常情况下,这种情况发生在用于调试的.pdb文件与实际执行代码不同的情况下。也就是说,如果您已经对程序集进行了更改。
此外,请确保在web.config中有<compilation debug="true">。我不知道它是否与页面指令有关,但通常这是解决问题的方法 :)

Web配置文件中设置了<compilation debug="true">属性。VS用什么进行调试?我已经从vs临时缓存文件夹中删除了文件并删除了pdb文件。需要注意的是,重新编译后,pdb文件没有在bin文件夹中重新生成。难道不应该重新生成吗? - Bill Martin
通常情况下,网站都没问题,只有在调试引用的程序集时才会出现这个问题。只要将调试设置为true,它就应该生成所有所需的调试符号,但我认为它们不会放在bin目录中,而是放在临时文件中。 - Darren Kopp
感谢您指出这是我的问题<compilation debug="true">。 - HaBo

1

我同意,当我有多个不同步的程序集和/或一个或多个PDB与源代码不匹配时,我曾经遇到过这种情况。在我的情况下,是因为我的版本控制软件(ClearCase)出现了一些问题,我实际上没有编译我认为我正在编译的内容。


0
如果您有一个“WebSite”项目,而不是“WebApplication”,我发现重叠的代码文件类可能会导致问题。这种情况可能有几种方式发生。不幸的是,Visual Studio似乎仍然可以编译解决方案/项目而没有错误。
以下是可能发生的情况:
1. 在网站上移动页面时。 2. 移动页面后进行源代码控制合并,可能会导致页面重复,从而使Visual Studio在调试期间感到困惑。 3. 从模板中复制和粘贴现有页面也可能导致此问题。
为了解决这个问题,我:
1. 在解决方案中搜索“Class TheProblemPageCodeSymbolIssue”以查找重复项。 2. 重新设计那些重复的代码后面的类名,并测试所有这些页面,以确保我可以使用调试断点。
希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接