在我的Java应用程序中,我有几个try
catch
异常块,我试图捕获异常。其中许多都是处理的,因此对用户完全透明,但我想创建一个包含变量值和整个调用堆栈的转储文件,以便我可以诊断导致此问题的原因。这可能吗?一段代码没有用,因为它本来应该在前面看起来很好我想用这些转储文件调试应用程序。
到目前为止,我没有做过这样的事情,几乎不可能找出导致错误的原因。
感谢。
答案 0 :(得分:0)
您需要使用一些日志框架来执行此类任务。我通常使用它:Apache Log4J和SLF4J。您可以在记录您认为可能导致问题的异常之前记录变量值。
答案 1 :(得分:0)
首先要看的是堆栈转储,这对诊断某些问题非常有帮助。尝试发送QUIT信号(通过在终端中按Ctrl- \或kill命令)到Java进程。
通过在命令行中传递-XX:+ HeapDumpOnOutOfMemoryError选项,您还可以设置JVM在发生内存错误时执行堆转储。执行此操作后,请尝试在适当的时间在代码中引发OutOfMemoryError。