您的应用已进入中断状态,但没有代码可显示,因为所有线程都在执行外部代码(通常是系统或框架代码)
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 符号服务器解决了这个问题。
Tools
→Options
→Debugging
→General
→Untick "Enable Just My Code"
Tools
→Options
→Debugging
→Symbols
→Tick "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,我认为这是原因,但我不确定。
这到底是为了什么?以上是关于您的应用已进入中断状态,但没有代码可显示,因为所有线程都在执行外部代码(通常是系统或框架代码)的主要内容,如果未能解决你的问题,请参考以下文章