Java 本机访问冲突不会触发 Windows jit 调试器

问题描述 投票:0回答:1

我在从 java exe 调用的 C++ 代码中创建了一个空取消引用。 AeDebug 注册表项是使用记事本设置的(用于测试)。但是,应用程序崩溃不会启动记事本。 附加windbg,发现jvm有系统调用的异常处理程序,该处理程序终止进程。

...
jvm!c2v_getThreadLocalLong+0x212268
ntdll!RtlpExecuteHandlerForException+0xd
ntdll!RtlDispatchException+0x373
ntdll!KiUserExceptionDispatch+0x3a
...

我知道 -XX:OnError vm arg 会在崩溃时运行任何 cmd,但它不适合我的使用,因此我需要在 AeDebug 中设置 cmd 来触发。

如何在不触发AeDebug键中设置的cmd的情况下防止jvm终止进程

java windows debugging jvm jvm-hotspot
1个回答
0
投票

添加

-XX:+UseOSErrorReporting
JVM 选项将崩溃传播到操作系统错误处理程序。在这种情况下,Windows 应调用
AeDebug
注册表项中指定的调试器命令。

或者,您可以使用

-XX:+ShowMessageBoxOnError
选项。当发生崩溃时,JVM 将冻结进程并显示一个对话框,邀请您手动附加调试器。

© www.soinside.com 2019 - 2024. All rights reserved.