【发布时间】:2013-02-08 00:52:09
【问题描述】:
我有一个从原生 c++(比如 XYZ.dll)创建的 DLL。我在 C++ .NET 的包装器中链接到该 DLL。在我的最高级别 C# 代码中使用了这个包装器的一个对象。
我的问题是:有时我的 DLL 中的一个函数会崩溃,而我的最高级别 C# 代码会因 AppCrash 而崩溃;崩溃模块:XYZ.dll。我试图弄清楚它在哪里使我的本机 C++ 代码崩溃,但事实证明这是徒劳的。我想知道是否有办法让我在我的 C# 代码中捕捉到这个崩溃并继续前进。
【问题讨论】:
-
据我所知,你无法抓住它。即使您将其反汇编为 IL 并修改 IL 表示。
-
在调试非托管代码时,通常最好回到久经考验的旧技术,如日志记录。您不会从非托管“崩溃”中获得托管异常,因此您能做的最好的事情就是隔离导致崩溃的原因并避免这样做。即使它被证明是您无法控制的第三方代码中的错误,您至少可以找到合适的解决方法。
-
这不是真的。你可以在 c# 中使用 SEH。 limbioliong.wordpress.com/2011/10/13/…
标签: c# c++ .net try-catch crash