问题描述
我们的项目使用 C++/CLI 来结合 C# 和 C++ 代码。
来自C#和C++/CLI的异常,我们可以使用try-catch来获取异常。
但是来自原生 C++ 的异常,尤其是被认为不可恢复的异常,或者发生在另一个线程中的异常,例如 AccessViolationException
、StackOverflowException
。
int* p = nullptr;
*p = 123;
而且我也看到当原生异常发生时,控制台会打印这个消息然后应用程序崩溃:
Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Repeat 2 times:
--------------------------------
at <Module>.NativeCppDemo.MyNativeCppTestClass.memberFunctionAddFunCrash(NativeCppDemo.MyNativeCppTestClass*,Int32,Int32)
--------------------------------
at ClrCrashTestNetCore.ClrTest.memberFunAddCrash(Int32,Boolean)
at CsCrashDemoNetCore.Program.Run()
at CsCrashDemoNetCore.Program.Main(System.String[])
这是我想要的消息,但我不知道如何在代码中获取它。 并且我在另一个线程上发生异常时发现此消息,它不会在控制台上打印。
我们有什么方法可以从原生 C++ 中获取异常信息吗?喜欢有一些接口来获取异常吗?还是使用profiler可以获取调用栈?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)