繁体   English   中英

日食中的堆栈跟踪

[英]Stack trace in eclipse

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM