代码之家  ›  专栏  ›  技术社区  ›  Instance Hunter

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

  •  1292
  • Instance Hunter  · 技术社区  · 7 年前

    C速成版桌面应用程序。工作了,5秒钟后就没工作了。

    我尝试了以下方法。

    • 确保在所有程序集上设置了调试配置、调试标志和完整的调试信息。
    • 从整个计算机中删除所有bin和obj文件夹以及与项目相关的所有dll。
    • 重新创建从头开始导致问题的项目。
    • 重新启动。

    我在解决方案中有两个WinForms项目。其中一个加载调试信息,另一个不加载。它们都引用我试图在项目文件中以完全相同的方式获取调试信息的程序集。有什么想法吗?


    我想在这里补充一点,主要是在我回来回顾这个问题时,符号在程序集被加载之前不会被加载,程序集在需要之前不会被加载。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,不会加载符号(并且会将断点显示为未命中)。

    88 回复  |  直到 7 年前
        1
  •  925
  •   Hans Passant    9 年前

    一旦到达断点或使用 Debug > Break All 使用 Debug > Windows > Modules . 您将看到加载到进程中的所有程序集的列表。找到要获取其调试信息的。右键单击它并选择“符号加载信息”。您将得到一个对话框,其中列出了它为程序集查找.pdb文件的所有目录。根据实际的.pdb位置验证该列表。确保它找不到旧的。

    在普通项目中,程序集及其.pdb文件应该始终由IDE复制到与.exe相同的文件夹中。项目的bin\debug文件夹。如果你一直在玩的话,一定要从GAC中删除一个。

        2
  •  309
  •   juFo    11 年前

    首先尝试用鼠标右键单击项目来重建项目>重建 如果不起作用,请尝试清理项目(在项目上单击鼠标右键>清理)

    如果不起作用,请检查:

    1. 鼠标右键单击 项目
    2. 选择 [财产]
    3. 选择 [生成] 标签
    4. 确保 [定义调试常量] 和 [定义跟踪常量] 被检查
    5. 单击 [高级] “生成”选项卡页底部的按钮
    6. 确保 [调试信息:] 设置为 [满]
    7. 点击 [好]然后重建 项目;

    (步骤6生成.pdb文件,这些是调试符号)

        3
  •  255
  •   Patrick    8 年前

    只是一些简单的尝试-你可能已经尝试过了。 右键单击解决方案资源管理器中的解决方案,单击 “清除解决方案”,这将删除与解决方案关联的所有已编译和临时文件。 .

    重新生成解决方案,然后再次尝试调试。

    我在解决方案中的多个项目遇到了断点问题——有些项目编译为x86,有些项目编译为x64。

        4
  •  203
  •   sublimental    11 年前

    禁用调试/常规设置中的“仅我的代码”选项。

        5
  •  139
  •   Joshi Spawnbrood    8 年前

    交叉发布此修复来自 Hans K 我在类似的线上发现的 >> HERE << :

    右键单击解决方案-->属性

    查看“公共属性”->启动项目

    选择多个启动项目

    在需要调试的项目上选择“启动操作”。

        6
  •  55
  •   fabriciorissetto    8 年前

    选定的答案使我解决了我的问题。但我需要做更多的事情:

    即使在下拉列表中选择了“调试”:。

    在项目属性中,构建:

    Visual Studio未将符号加载到特定项目。因此,在该下拉列表中,我选择了“配置管理器”,并看到我的Web项目的设置不正确:

    然后我将其设置为“debug”,它开始生成 .pdb 文件。 但是 我需要手动复制pdb和dll并放入vs正在查找的文件夹中(这里是所选答案帮助我的位置):。

    更多:

    即使在下拉列表中选择了“调试”,也要执行以下操作:

    enter image description here

    在项目属性中构建:

    enter image description here

    Visual Studio未将符号加载到特定项目。因此,在该下拉列表中,我选择了“配置管理器”,并看到我的Web项目的设置不正确:

    enter image description here

    enter image description here

    然后我将其设置为“调试”,它开始生成 .pdb 文件。 但是 我需要手动复制pdb和dll,并将其放入vs正在查找的文件夹中(这里是所选答案帮助我的地方):

    enter image description here

        7
  •  41
  •   James S    11 年前

    Debug > Windows gt; Modules 为了查看加载了哪些模块,我选择了正确的方向。

    在我的例子中,IISExpress似乎加载了一个不同于临时ASP.NET文件的dll。

    解决方案?

    1. 浏览到 C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
    2. 删除此目录中的所有内容!
        8
  •  38
  •   theITvideos    11 年前

    我可以通过简单地将“附加到进程”中的选项设置为“自动确定要调试的代码类型”来修复错误,如附加屏幕截图中所示。

    只需遵循以下步骤:

    • 从菜单栏转到“调试”。
    • 单击“Attach to process”(附加到进程)
    • 在“Attach to”(连接到)选项附近,单击“Select”(选择)按钮。
    • 将出现“Select code type”(选择代码类型)窗口
    • 现在,选择选项“Automatically determine the type of code to debug”(自动确定要调试的代码类型),然后单击“OK”(确定)按钮。

    ch处理“to”自动确定要调试的代码类型选项,如所附屏幕截图所示。

    只需遵循以下步骤:

    • 去 调试 从菜单栏
    • 点击 附加到进程
    • 在附近 依附于 选项,单击 选择 按钮
    • 这个 选择代码类型 窗口将出现
    • 现在选择选项 自动确定要调试的代码类型 然后单击OK按钮。

    Fixed Debugging Error

        9
  •  36
  •   biagidp    8 年前

    检查bin/debug文件夹中是否缺少.pbd文件。如果是,则转到项目的“属性”,选择“构建”,然后在底部选择“高级”。在出现的新窗口的“调试信息”下选择“完整”。这是我的问题,并为我解决了它。

    在底部。在出现的新窗口的“调试信息”下选择“完整”。这是我的问题,帮我解决了。

    Showing where to find the setting

        10
  •  34
  •   Serj Sagan    8 年前

    有时,即使它给了你这个错误, breakpoint 仍然会被击中,所以忽略错误。这种情况经常发生在 Views 一个 MVC web app .

        11
  •  28
  •   Sandra    10 年前

    在我的例子中,在我的项目属性中检查了“优化代码”。这导致vs将我的程序集视为“非我的代码”,反过来,它没有为它加载符号。

    解决方案是取消选中此项。

    t没有为它加载符号。

    解决方案是取消选中此项。 Location of Optimize Code checkbox

        12
  •  21
  •   Tino Jose Thannippara    10 年前

    只需检查您的解决方案是否处于发布模式。

        13
  •  20
  •   Nick Hawes    9 年前

    尝试在Windows中以管理员身份运行Visual Studio。

        14
  •  15
  •   Adithya Sai    8 年前

    在我的例子中,我尝试在relase模式下调试。一旦我将其更改为调试模式。其工作

        15
  •  14
  •   DS.    16 年前

    您需要在编译器设置中启用“生成调试信息”

        16
  •  10
  •   Dzinx    11 年前

    我们找到了问题的根源。此代码使用的是.aspx文件的page指令中的“codebehind”属性,而不是“code file”属性(ASP.NET 2.0及更高版本)。经过几天的绝望,一个简单的搜索和替换解决了问题。

        17
  •  10
  •   Andrus    11 年前

    Microsoft Visual Studio Express 2013版本中不存在“启动调试、调试+Windows+模块”选项。

    不检查 “使用托管兼容模式” 在“工具”“选项”“调试”中可以修复此问题。

        18
  •  8
  •   Mahesh    12 年前

    我试过上面提到的所有方法,但都没用。 [清洗溶液,检查PDB文件等]

    即使发布相同的解决方案也无法解决问题。

    然后我回到了我通常做的事情来解决(愚弄这个顽固的Visual Studio)

    我所做的就是对代码进行有意的更改并发布解决方案。 然后我恢复了更改并再次发布。

    瞧,PDB文件,除掉恶灵。这不是一个明智的解决方案,但这确实有效。- -

        19
  •  7
  •   Sai Chakradhar Sana    10 年前

    要检查的事情只是为了清楚:确保将配置设置为“debug”,而不是“release”。可以在“release”模式下调试启动项目,但不能调试引用的类库。

        20
  •  6
  •   Tratak    11 年前

    这些答案都没有解决我的问题。我尝试了另一件事,基于这样一个事实:停止的项目实际上不是加载的项目。当汉斯·帕桑特写下这个.dll文件时,我发现我要停止调试程序,而在.exe文件附近复制的.pdb文件。这些文件的日期比较旧,所以我认为它们在运行时没有更新。我手动删除了它们,Visual Studio创建了另一对,并将此新对放在.exe附近。现在破坏者开始工作了!

    可能Visual Studio无法复制和替换.exe附近的现有文件(.dll和.pdb),因为有其他文件。所以如果我手动删除,那么vs可以在.exe附近创建一个新的。

    我认为另一个更改(检查等,从另一个答案)触发了一些东西,Visual Studio复制并替换了项目文件夹中的dll和pdb到exe附近的文件夹,所以这是一个解决方案。

    我认为问题的根本原因是Visual Studio在运行时使用了另一个文件,而不是项目中的文件,并且停止了。

    也许这个答案可以帮助别人!

        21
  •  5
  •   Sinaesthetic    9 年前

    项目属性(然后选择生成配置)>生成选项卡>高级…>调试信息(下拉列表)

    设置为“全部”或“仅PDB”,然后重新生成

        22
  •  5
  •   kselva    9 年前

    而不是仅仅做这些事情

    关闭并重新打开

    它将解决这个问题的解决方案

        23
  •  5
  •   Christian Gollhardt    9 年前

    仅限Web应用程序(IIS Express):。

    • 右键单击“IIS Express Tray”,然后关闭IIS。
    • 清洁溶液

    IIS Tray

        24
  •  5
  •   tfa    7 年前

    这花了我一段时间尝试上面的其他选项,出于某种奇怪的原因,调试停止了工作。

    工具->选项->调试->常规->(取消勾选)“要求源文件与原始版本完全匹配”选项

        25
  •  4
  •   Kary    14 年前

    我当时正在使用VS10将一个C应用程序与一个静态库集成,这是我新接触到的。我编写了一个托管代码dll来连接它们。除了静态库,我可以在任何地方设置断点。我收到上面描述的消息-没有为此文档加载符号。我尝试了上面的许多建议。我可以看到符号没有被加载。我最后注意到一个复选框配置调试,启用非托管代码调试。这允许我在静态lib函数中设置断点。

        26
  •  4
  •   Sam    10 年前

    我仔细阅读了上面所有的答案,但没有一个能解决我的问题。

    在我的例子中,我正在编译一个类库(DLL)。调试模块中似乎没有加载任何模块,因此我甚至无法手动加载符号。

    我的解决方案是将此行添加到我的代码中:

    System.Diagnostics.Debugger.Launch();
    

    到达此代码后,将触发异常,.NET Framework将显示一个对话框,询问您要使用哪个Visual Studio(即,新的vs 2008实例、新的vs 2013实例等)来调试程序。您可以选择已加载项目的现有vs实例。这将把进程附加到vs会话并加载所有符号,现在您可以调试项目了。

    当然,编译必须使用调试配置完成,而不是释放。

        27
  •  4
  •   Neil Walker    8 年前

    我知道我晚了很多年,但我认为我做了一些错误的事情,并遵循了上述步骤,然后我意识到我错误地将解决方案配置设置为“释放”)。

        28
  •  4
  •   Muhamed Krasniqi    8 年前

    我也遇到过类似的问题,我做了以下工作: 调试=>选项=>常规=>删除“仅启用我的代码”复选标记 这对我有用……

        29
  •  4
  •   user781700    7 年前

    我也有同样的问题,我在x86(或x64)中重建了整个解决方案(包括引用的项目)。

    尽管我从配置管理器(build->configmanager)将所有项目设置为x86,但我的一些项目没有设置为x86。

    所以只要确保右键单击项目并遵循

    项目->属性->调试选项卡,验证配置和平台。

        30
  •  3
  •   Mark Whaling    14 年前

    对于ASP.NET应用程序,请检查网站“ASP.NET”选项卡的属性。确保选择了正确的ASP.NET版本。

    推荐文章