Java故障定位方法总结

  • 多线程并发,程序执行速度较快,使用简单断点不能够定位到出错的线程;
    •   通过打印日志,不断精确定位故障的位置和导致故障的原因。
    • 在断点处设置condition为Thread.currentThread().getName().contains("目标线程池的名字");
  • 线程池之间的任务调度,导致堆栈较短。
    •   分析多个线程池级联调用的顺序关系,分析线程池任务的相互转换关系。
  • 某个程序可能会被不同的接口进行调用。
    •   在出错的位置,生成IllegalArgumentException(),使用logger.error(e)打印堆栈信息到日志,分析堆栈信息,找到引起故障的调用接口。
  • 程序不断创建新的线程池,已知该线程池的名字,对程序不熟悉
    •   在日志中搜索该线程池,找到线程池打印的日志,到代码中搜索该日志,找到打印日志的位置。
原文地址:https://www.cnblogs.com/MyLifeMyWay/p/8481911.html