如何在 .NET core 或 .NET 5

问题描述

我需要在发生崩溃时获取调用堆栈。

我们的项目使用 C++/CLI 来结合 C# 和 C++ 代码

来自C#和C++/CLI的异常,我们可以使用try-catch来获取异常。

但是来自原生 C++ 的异常,尤其是被认为不可恢复的异常,或者发生在另一个线程中的异常,例如 AccessViolationExceptionStackOverflowException

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 (将#修改为@)