winforms 如何诊断错误SEHException - External component has thrown an exception

55ooxyrt  于 11个月前  发布在  其他
关注(0)|答案(9)|浏览(135)

每当用户报告错误时,

System. System.InteropServices.SEHException-外部组件抛出异常?

作为一个程序员,我能做些什么来确定原因吗?
场景:一个用户(使用我公司编写的程序)报告了这个错误。这可能是也可能不是一次性错误。他们提到在上个月,计算机两次“停止工作”。我从经验中吸取了教训,不要把这个描述太当真,因为这通常意味着与计算机有关的人没有按预期工作。他们无法给予我更多的细节,我找不到任何记录错误。因此,它可能是或可能不是这个错误。
从堆栈跟踪来看,实际的错误是在构造一个不直接调用任何互操作代码的类时,但可能由于对象可能是数据绑定到DevExpress Grid的列表的一部分而变得复杂。
该错误被一个未处理的异常例程“捕获”,该例程通常会关闭程序,但可以选择忽略并继续。如果他们选择忽略错误,则程序继续工作,但下次运行此例程时错误再次发生。但是,在关闭并重新启动我们的应用程序后,它不会再次发生。
有问题的电脑似乎没有压力。它运行的是Vista Business,有2GB的内存,根据任务管理器的说法,我们的应用程序只使用了大约一半的内存,大约200 Mb。
还有另一条信息可能相关也可能不相关。同一程序的另一部分使用了第三方组件,该组件实际上是围绕本机dll的dotnet Package 器,并且该组件确实存在一个已知的问题,
试图读取或写入受保护的内存。这通常表示其他内存已损坏
组件制造商说,这已经在我们内部使用的最新版本的组件中得到了修复,但这还没有提供给客户。
考虑到错误的后果很低(没有工作丢失,重新启动程序并返回到最多只需要一分钟),并且考虑到客户将很快获得新版本(带有更新的第三方组件),我显然可以交叉手指并希望错误不会再次发生。
但我还能做些什么吗?

vptzau2j

vptzau2j1#

是的。这个错误是一个没有Map到.NET错误的结构化异常。它可能是你的DataGridMap抛出了一个没有被捕获的本地异常。
你可以通过查看ExternalException.ErrorCode属性来判断发生了什么异常。我会检查你的堆栈跟踪,如果它绑定到DevExpress网格,向他们报告问题。

vxf3dgd4

vxf3dgd42#

当我的程序第一次使用本机DLL Package 器时,我遇到了一个类似的SEHException问题。结果是该 Package 器的本机DLL丢失了。异常对解决这个问题没有任何帮助。最后有帮助的是在后台运行procmon并检查加载所有必要的DLL时是否有任何错误。

hyrbngr7

hyrbngr73#

如果你遇到了这篇文章中描述问题:
asp.net mvc debugger throwing SEHException
那么解决方案是:
如果您有任何来自Trusteer应用程序(如Rapport或其他),只需卸载并重新启动系统,它就可以正常工作.在这里找到了这个解决方案:
http://forums.asp.net/t/1704958.aspx/8/10?Re+SEHException+thrown+when+I+run+the+application

vxqlmq5t

vxqlmq5t4#

组件制造商说,这已经在我们内部使用的最新版本的组件中得到了修复,但这已经给了客户。
询问组件制造商如何测试客户遇到的问题是否是他们在最新版本中修复的问题,而不是在向客户部署最新版本之前。

xpcnnkqh

xpcnnkqh5#

只是另一个信息.今天在Windows 2012 R2 x64 TS系统上遇到了这个问题,其中应用程序是从unc/network路径启动的。对于所有终端服务器用户,一个应用程序都出现了这个问题。在本地执行应用程序没有问题。重新启动后,它再次开始工作-抛出的SEHException是Constructor init和TargetException。

ujv3wf0j

ujv3wf0j6#

当应用程序驻留在网络共享上时,我遇到了这个错误,并且设备(笔记本电脑,平板电脑,...)在应用程序使用时与网络断开连接。在我的情况下,这是由于Surface平板电脑超出无线范围。安装更好的WAP后没有问题。

b91juud3

b91juud37#

我的机器配置:
操作系统:Windows 10 Version 1703
我在Visual Studio 2017 Community edition中调试我的C# .Net项目时遇到了这个错误。我通过在运行时加载的C程序集上执行p/invoke来调用本机方法。我遇到了OP报告的相同错误。
我意识到Visual Studio是用一个不是机器上管理员的用户帐户启动的。然后我用一个不同的用户帐户重新启动了Visual Studio,这个帐户是机器上的管理员。就这样。我的问题得到了解决,我再也没有遇到过这个问题。
需要注意的一点是,在C
程序集上调用的方法应该在注册表中写入一些东西。代码来做一些RCA,但我看到整个事情失败的可能性,因为在Windows 10操作系统中写入注册表需要管理权限。所以早些时候,当Visual Studio在没有管理权限的用户帐户下运行时,特权,然后本地调用失败。

2guxujil

2guxujil8#

我在对正在设置的内存缓存运行单元测试时遇到此错误。它淹没了该高速缓存。在使该高速缓存无效并重新启动VM后,它工作正常。

5lwkijsr

5lwkijsr9#

我得到了这个错误,在一个单纯的如果喜欢:

if (table.Equals("asd", StringComparison.OrdinalIgnoreCase))
{
...
}

字符串
解决了 Package 在一个尝试捕捉像波纹管.为什么会发生,为什么它解决了,仍然是一个谜:

try
{
  if (table.Equals("asd", StringComparison.OrdinalIgnoreCase))
  {
  ...
  }
}
Exception()
{

}

相关问题