代码之家  ›  专栏  ›  技术社区  ›  Jose

如何从web启动下运行的客户端获取Java堆栈跟踪?

  •  1
  • Jose  · 技术社区  · 17 年前

    1. 如果我们让她做 中止 在她的应用程序上,JVM会将堆栈跟踪写入哪里?
    2. 监控 ?
    3. JMX豆 对客户过于苛刻?它真的有助于解决生产中的问题吗?

    目前,用户正在运行JRE 1.5.0-b08,但我们确实计划在几个月内迁移到JRE 6。

    你怎么认为?

    3 回复  |  直到 17 年前
        1
  •  2
  •   Charlie Martin    17 年前

    Jos,您可以通过多种方式从JVM中获取大量信息。

    最好是在远程JVM中启用调试。您可以使用 j2se 描述符XML中的元素,如图所示 here 。因为你可以设置 -Xdebug 你有一个好的开始;我从未尝试过在web启动应用程序上进行远程调试,因此设置远程部分可能有点问题。

    你可以使用 native java log4j remote logger .

    不过,如果它像你描述的那样挂起,那么发生的事情很可能是某种网络挂起。你能对它进行一些跟踪/调试吗 谈话结束了吗?

        2
  •  1
  •   Martin    17 年前

    除了这些调试建议,为什么不为线程安装一个异常处理程序呢?请参阅java.lang.Thread。

    void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
    

    以下是相关的javadoc: http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)

    如果你在代码中安装了它,并且一旦进入Swing的EDT,那么只需编写一些java代码通过电子邮件发给自己,保存在服务器上,向用户展示等等。

        3
  •  0
  •   kdgregory    17 年前

    您需要显示Java控制台(从命令行运行javaws,并从“首选项”对话框中选择它),然后点击“v”