日食中的堆栈跟踪

时间:2010-07-06 15:28:09

标签: java eclipse

如何通过eclipse跟踪堆栈?在我的代码中,我正在尝试上传文件,当我在应用程序中执行文件上传操作时,它只是挂起而没有错误消息。我已经尝试过调试,但它没有多大帮助。

3 个答案:

答案 0 :(得分:2)

假设您正在从Eclipse运行应用程序,但是在像Glassfish或Tomcat这样的Java EE容器内,在异常对象上调用printStackTrace()方法(当被捕获时)将在Eclipse的控制台窗口中显示堆栈跟踪。在您的情况下,您首先需要知道是否正在抛出异常。我不建议在运行时创建一个Exception对象,只是为了从中推导出堆栈跟踪。

当然,在编写生产质量代码时,这不是一个好习惯,您应该考虑使用log4j,jul或slf4j等日志框架来跟踪应用程序行为。

如果push推进,则启用servlet容器的调试(这在容器之间有所不同),这样除了应用程序之外,您还可以跟踪容器本身的行为。

答案 1 :(得分:2)

  • 在服务器上以与启动的Glassfish相同的用户身份启动JDK bin文件夹中的“jvisualvm”。
  • 双击“Local”下的相应条目,附加到Glassfish流程。
  • 在“线程”面板上,单击“线程转储”按钮。
  • 将堆栈跟踪复制到剪贴板。
  • 在Eclipse中,将堆栈跟踪粘贴到“控制台”面板中的“Java堆栈跟踪控制台视图”中。

答案 2 :(得分:1)

我建议逐步使用eclipse调试器找出它挂起的位置。当您单步执行时,这将自动为您提供堆栈跟踪。

我发现“步入”(F5)功能最有用,这使您可以递归地下载到函数中以探索正在发生的事情。

您可以在文件上传代码的开头设置断点,以便您可以在大致正确的位置开始单步执行。在我的Eclipse版本中,堆栈跟踪显示在相应线程下面左上角的“调试”窗格中。