我有一个调用混合模式 C++ dll 的 C# 应用程序。我通过 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps 启用了转储生成。
当 dll 访问无效内存时,运行时会将 win32 异常转换为托管 System.AccessViolationException,并在生成转储之前展开堆栈,从而破坏本机堆栈信息。根据 msdn 的说法,我可以在 .net 获取异常并手动生成转储之前自己捕获异常,但是在已经损坏的程序上运行代码可能会挂起它。那么,如何禁用 SEH 翻译呢?