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

时间:2008-12-23 16:09:02

标签: c# .net asp.net debugging

我在主题行中收到错误。我在服务器2k3sp2上运行vs2k8。我已经尝试删除pdbs,缓存目录,验证是否在特定页面上设置了调试。有趣的是其他页面调试就好了。就在我去这一页的时候。必须是配置问题,但页面指令如下所示:

print(“<%@ Page Language ='C#'AutoEventWireup ='true'CodeBehind ='MemberSearch.aspx.cs'Insertits ='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

比尔

6 个答案:

答案 0 :(得分:9)

我遇到这样的问题的唯一一次是,如果我在项目处于发布模式时尝试调试。

答案 1 :(得分:4)

当我使用两个单独的网站'网站'时,我通常会看到此错误弹出。我有一个Web前端和一个Web服务后端。如果开发服务器没有运行代码文件的'site',那么您将收到该错误消息。

这可能不是您的问题,但这通常是我看到错误消息的情况。你可以做的另一件事是Debug - >如果调试器未附加到正确的进程,则附加到进程。

答案 2 :(得分:3)

放置内联break statement以确保您实际运行代码。如果你没有停止,那么你试图调试的代码可能就是没有运行,或者你没有用托管调试器调试它。

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

如果以上内容无效,请更新并提供更多信息。

答案 3 :(得分:2)

通常,当VS用于调试的.pdb文件与代码实际执行的文件不同时,会发生这种情况。也就是说,如果您对装配进行了更改 另外,请确保您在web.config中有<compilation debug="true">。我不知道它是否与页面指令有任何关系,但这通常对我有什么影响:)

答案 4 :(得分:1)

我同意当我有多个不同步的程序集和/或一个或多个pdbs与源不匹配时,我已经看到了这一点。在我的情况下,这是因为我对我的版本控制软件(ClearCase)有一点奇怪,而我实际上并没有编译我认为的那样。

答案 5 :(得分:0)

如果你有一个“WebSite”项目,而不是“WebApplication”,我发现重叠的代码文件类可能会导致问题。有几种方法可以实现。不幸的是,Visual Studio似乎仍然没有错误地编译解决方案/项目。

  1. 在网站上的文件夹之间移动页面。
  2. 移动页面后的源代码控制合并可能导致页面重复,并且Visual Studio在调试过程中会感到困惑。
  3. 复制和粘贴现有页面(模板)也可能导致此内存。
  4. 解决问题我

    1. 在解决方案中搜索重复项的“Class TheProblemPageCodeSymbolIssue”。
    2. 重新考虑了类名后面的重复代码并测试了所有这些页面,以确保我可以使用调试断点。
    3. 希望有所帮助。