当前位置:  开发笔记 > 编程语言 > 正文

你应该如何诊断错误SEHException - 外部组件引发了异常

如何解决《你应该如何诊断错误SEHException-外部组件引发了异常》经验,为你挑选了3个好方法。

每当用户报告错误时,例如

System.Runtime.InteropServices.SEHException - 外部组件引发了异常?

我作为程序员可以做些什么来确定原因?

场景:一个用户(使用我公司编写的程序)报告了此错误.这可能是也可能不是一次性错误.他们提到,在上个月,计算机已经两次"停止工作".我从经验中学到了,不是太过于字面意思,因为它通常意味着与计算机有关的人没有按预期工作.他们无法给我更多细节,我找不到任何记录错误.因此它可能是也可能不是这个错误.

从堆栈跟踪中,实际错误是在构造一个不直接调用任何互操作代码的类时,但可能因为该对象可能是与DevExpress Grid数据绑定的列表的一部分而复杂化.

错误被未处理的异常例程"捕获",该例程通常会关闭程序,但可以选择忽略并继续.如果他们选择忽略错误,则程序继续工作,但下次运行此例程时会再次出现错误.但是,在关闭并重新启动应用程序后,它不会再次出现.

有问题的电脑似乎没有压力.它正在运行Vista Business,拥有2GB的内存,根据任务管理器,我们的应用程序只使用了大约一半,只有大约200Mb.

还有一条信息可能相关或不相关.同一程序的另一部分使用第三方组件,它实际上是一个围绕本机dll的dotnet包装器,这个组件确实有一个已知的问题,偶尔,你得到一个

尝试读取或写入受保护的内存.这通常表明其他内存已损坏

组件制造商表示,这已在我们内部使用的最新版本的组件中修复,但尚未向客户提供.

鉴于错误的后果很少(没有工作丢失并重新启动程序并返回到最多只需要一分钟的时间)并且考虑到客户将很快获得新版本(更新后的第三个 - 派对组件),我显然可以交叉手指,希望错误不再发生.

但还有什么我可以做的吗?



1> Reed Copsey..:

是.此错误是未映射到.NET错误的结构化异常.可能是你的DataGrid映射抛出了未被捕获的本机异常.

您可以通过查看ExternalException.ErrorCode属性来判断发生了什么异常.我会检查您的堆栈跟踪,如果它与DevExpress网格绑定,请向他们报告问题.


“通过查看ExternalException.ErrorCode属性”-您是否有确切的提示?VS向我显示“在.... dll中发生了'System.Runtime.InteropServices.SEHException类型的未处理的异常。在任何地方查看异常对象的“详细信息”。

2> Maurice Gild..:

当我的程序第一次使用本机dll包装器时,我遇到了类似的SEHException问题.原来,该包装器的原生DLL丢失了.这个例外对解决这个问题没有任何帮助.到底有什么帮助是在后台运行procmon并检查加载所有必需的DLL时是否有任何错误.



3> Safran Ali..:

如果您遇到此帖中描述的问题:

asp.net mvc调试器抛出SEHException

然后解决方案是:

如果您有来自Trusteer的任何应用程序(如支持或任何东西),只需卸载并重新启动系统,它就可以正常运行...在此处找到此解决方案:

http://forums.asp.net/t/1704958.aspx/8/10?Re+SEHException+thrown+when+I+run+the+application

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有