Vex*_*toR 4 java systemexit stack-trace
我认为有一种方法可以做到这一点SecurityManager,但我不想为此在应用程序中引入它。
有没有办法使用其他解决方案捕获并记录所谓的 exit() 的堆栈跟踪?
小智 7
使用关闭钩子怎么样?它可能是这样的:
Thread printStackTracesOnShutdownHook = new Thread(() -> {
LOG.info("Shutdown hook called");
for (Map.Entry<Thread, StackTraceElement[]> pair :
Thread.getAllStackTraces().entrySet()) {
LOG.info(pair.getKey() + " : " + Arrays.toString(pair.getValue()));
}
});
Runtime.getRuntime().addShutdownHook(printStackTracesOnShutdownHook);
Run Code Online (Sandbox Code Playgroud)
您可以将此代码添加到应用程序中的某个位置(它将被执行的位置)。然后在关闭时printStackTracesOnShutdownHook将写入日志所有堆栈跟踪。并且您将能够从这些 stackTrace 中找到System.exit()调用的位置。