您的应用已进入中断状态,但没有代码可显示,因为所有线程都在执行外部代码(通常是系统或框架代码)

Posted

技术标签:

【中文标题】您的应用已进入中断状态,但没有代码可显示,因为所有线程都在执行外部代码(通常是系统或框架代码)【英文标题】:Your app has entered a break state, but there is no code to show because all threads were executing external code (typically system or framework code) 【发布时间】:2018-03-19 23:22:45 【问题描述】:

Visual Studio 2017 在调试模式下中断并显示消息:

您的应用已进入中断状态,但没有可显示的代码 因为所有线程都在执行外部代码(通常是系统或 框架代码)。

邮件在Break Mode Window

怎么办?

【问题讨论】:

这与 Just my code 调试属性有关,不是吗? 我的猜测是,这无关紧要。我启用了“仅启用我的代码”和“如果启动时没有用户代码则发出警告”。 我禁用了“只是我的代码”调试属性,然后得到了一个有意义的错误消息,我可以解决。在我的情况下,错误是找不到 .png 图像,因为我没有正确设置资源属性,这导致了中断状态。 每次我处于调试模式并且在断点上停留太久时都会遇到相同的问题(我需要停留很长时间才能研究应用程序的状态)。然后我点击继续并得到错误。我怀疑某处有一个设置可以配置允许我暂停线程以进行调试的时间。有谁知道我可以在哪里配置更多的调试暂停时间? 【参考方案1】:

尽管这是一篇较旧的帖子,但我认为我的问题的解决方案可以帮助其他人寻找此问题的答案。

使用来自 Led Machine 的上述建议 - 为了查看堆栈跟踪,我发现了以下几行。

异常信息:System.Web.ThreadContext.AssociateWithCurrentThread(Boolean) 处的 System.NullReferenceException System.Web.HttpApplication.OnThreadEnterPrivate(Boolean) 处 System.Web.LegacyAspNetSynchronizationContext.CallCallbackPossiblyUnderLock(System.Threading.SendOrPostCallback, System.Object)

谷歌搜索此堆栈跟踪,将我发送到此页面: https://techcommunity.microsoft.com/t5/iis-support-blog/crash-at-system-web-legacyaspnetsynchronizationcontext/ba-p/1536553

显然,问题与我的应用程序被配置为使用旧版 ASP.NET 同步上下文有关,并且在代码的某些部分,我使用了一些新功能,例如任务。旧的(Legacy)上下文无法正确处理一些异步调用,这会导致如上所示的崩溃。

解决方法是在您的 web.config 中插入以下行:

<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>

【讨论】:

【参考方案2】:

我今天早些时候使用 C++ 控制台应用程序实现了这一点。禁用“只是我的代码”并选择 Microsoft 符号服务器解决了这个问题。

ToolsOptionsDebuggingGeneralUntick "Enable Just My Code"

ToolsOptionsDebuggingSymbolsTick "Microsoft Symbol Servers"

【讨论】:

【参考方案3】:

这里也一样。重新安装 VS 2019 解决了。

【讨论】:

【参考方案4】:

刚刚在 VS2019 中遇到了类似的问题,尽管我已经手动构建了很多次,但最终还是需要重新构建才能解决问题。

【讨论】:

我必须先清理我的解决方案,然后重建,然后重新启动 IIS 服务器,因为我正在调试托管在 IIS 中的 ASP.NET Web API。【参考方案5】:

有同样的问题,这是由于将构建设置为发布构建。然后当被问到是否要调试时,我不小心点击了总是忽略。

我在属性设置中将其更改为调试模式,但错误仍然存​​在。

您还需要在构建/配置管理器中的配置管理器中进行更改,并将配置设置为调试。

【讨论】:

【参考方案6】:

如果您使用 something like this 更改了构建过程以删除 PDB 文件,您也可能会遇到此问题。通常,如果要删除 PDB 文件,我建议您进行特定于“发布”配置的配置:

<Target Name="RemoveTranslationsAfterBuild" AfterTargets="AfterBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <RemoveDir Directories="@(FluentValidationExcludedCultures->'$(OutputPath)%(Filename)')" />

    <ItemGroup>
        <PDBFilesToDelete Include="$(TargetDir)\*.pdb"/>
    </ItemGroup>
    <Delete Files="@(PDBFilesToDelete)" />
</Target>

然后在调试时按照@Eric 的建议在“调试”配置下运行构建。

【讨论】:

【参考方案7】:

错误:IOException 找不到资源

大多数情况下,在使用 Visual Studio 表单应用程序时会发生此错误。

要解决此错误,您可以转到您的 App.xaml 文件并将 SratupUri 编辑为您当前的 xaml 表单名称。

<Application x:Class="AppName.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
    </Application.Resources>
</Application>

【讨论】:

【参考方案8】:

此类问题请检查属性和附件。 我们应该返回正确的字段并检查值字段。

例子:

private string NameField;
public string Name

  get
  
  return NameField;
  
  set
  
  nameField=value;
  

【讨论】:

【参考方案9】:

我遇到了类似的问题,花了 2 天后我们发现这是由于我的应用程序在我调试的同时从外部终止。

【讨论】:

【参考方案10】:

我在调试 VSTO Excel 加载项时遇到了类似的问题。在尝试了一切之后,我通过禁用我的防病毒软件上的实时保护模块解决了这个问题。

【讨论】:

你能详细说明如何禁用它吗? :D 我迷路了,我真的要试试这个:D【参考方案11】:

对我来说,当我的控制台应用程序设置为发布模式时,我收到了错误消息。切换到调试模式解决了这个问题。

【讨论】:

【参考方案12】:

在注入依赖项时检查是否存在循环依赖项。

【讨论】:

点评来源: 这篇文章似乎没有为问题提供quality answer。请编辑您的答案并改进它,或者将其作为对问题的评论发布。 见***.com/questions/25669677/… 循环依赖也遇到了这样的问题。 投我一票,这正是我的问题【参考方案13】:

检查你的IP地址(如果你不使用loopbach地址,它必须与监听地址相同)

【讨论】:

【参考方案14】:

当我将 connectionStrings 配置项放在 app.config 中的错误位置时,我发生了这种情况。

【讨论】:

【参考方案15】:

当我的项目属性中的“平台目标”设置为“任何 CPU”并选择“首选 32 位”时,我遇到了这种情况。

我将 Platform Target 切换为“x64”,因为我使用的是 64 位程序集,然后我可以正常运行/调试。

【讨论】:

我有问题,原因是解决方案中项目的平台目标不兼容。兼容性问题在codeproject.com/Articles/1160645/… 的“了解 32 位、64 位和任何 CPU 编译的 PE 文件的行为”部分讨论。【参考方案16】:

此解决方案适用于在 WPF 应用程序中遇到此错误的人。当我将 mainwindow.xaml 移动到查看文件夹并忘记在 App.Xaml 中更新时出现此错误。更新为 StartupUri="View/MainWindow.xaml" 后,主窗口在没有警告的情况下加载。

【讨论】:

【参考方案17】:

观察到相同的错误并通过以下方式解决:

从部分中删除重复的配置 删除多余/未使用的字符(输入错误)

【讨论】:

【参考方案18】:

当我不小心将启动项目设置为类库而不是最终项目(在本例中为 WPF 应用程序)时,我得到了这个。

【讨论】:

【参考方案19】:

点击“继续执行”

然后您将在输出选项卡中获得堆栈跟踪

【讨论】:

还要检查您是否在调试模式而不是发布模式下构建项目。 这很有帮助,因为从我的经验来看,问题的根源总是一些异步线程中的一些未处理的异常......【参考方案20】:

就我而言,我只需要将异常设置列表恢复为默认设置。

【讨论】:

当 VS 在使用我的 dll 构建后启动 Navisworks Manage 时,这对我来说非常有效。它消除了其中五个外部代码中断。【参考方案21】:
    首先在 Visual Studio 中检查所有常见异常设置运行时,以便了解实际错误。

    在加载您的应用程序期间检查他们的任何方法 throw new NotImplementedException();

在我的例子中,我使用 INavigationAware 这是 throw new NotImplementedException(); 我只是删除那些

    在你们所有的项目中都从 nuget 更新。

    清理并重建您的项目。

【讨论】:

就我而言,我下载的 Microsoft.SharePoint NuGet 包存在问题。这解决了我的问题。【参考方案22】:

首先将Break Mode Window 拖到Call Stack Window 以再次获得概览。

然后,检查Solution Explorer Window 是否处于源模式。 左起第四个按钮有一个下拉菜单。确保选择了 *.sln,即经典解决方案模式。

我不知道这一点,惊讶地发现在“源模式”下,即另一种可能性,会显示上述消息。

【讨论】:

嗨,你能解释一下check whether the Solution Explorer Window is in source mode吗?因为我在这个下拉列表中只有“文件夹视图”... 这让我很吃惊,我现在也只看到一个文件夹视图.. 有 VS 更新,我现在有 15.4.1,我认为这是原因,但我不确定。 这到底是为了什么?

以上是关于您的应用已进入中断状态,但没有代码可显示,因为所有线程都在执行外部代码(通常是系统或框架代码)的主要内容,如果未能解决你的问题,请参考以下文章

如何找到引发“ NullReferenceException:'对象引用未设置为对象实例的方法'?”

Flink 可查询状态是如何工作的

iAd 未在已发布的 iPhone 应用程序中显示

可执行文件已使用 App Store 使用无效权利进行签名

已发布应用但 Play 商店未在任何设备上显示更新

对中断interrupt的理解