本文属于原创,转载请加上链接以及博主名字
请尊重别人的劳动成果
在云端的开发工程师们,在工作中有没有觉得Debug,有时会占去一天工作时间的大部分。既然一天都在干这个,觉着就要研究分析下,
Debug是不是有可以总结分享的东西。
一般查bug时步骤如下,
第一步:定位问题,定位问题首先需要收集便是数据。一般有:业务运行日志,Gc日志(如果有开启的话),异常日志,线程Dump,堆Dump和一些会影响到业务运行的数据。
第二步:有了数据,于是我们就开始分析了。
第三步:通过分析,一般能定位问题,问题找到了,剩下的修改,出解决方案了。
一般Debug就这三步,这三步中又有什么技巧,怎样能提高我们的Debug效率。
第一步中的数据,是一个前人打井,后人喝水的工作,平时在Code时就要留心,按照一定的规范把日志记全了。提起注意的是,我们的业务一般Running在一个大环境中,所以大环境有什么
风吹草动,最好也听下,有时能为你排查问题省下不少时间。
第二步:有了数据,就是分析问题了,分析问题,对于不同的数据都有不同的工具,来提高你的分析速度。这部分靠平时不断的搜集和积累。当然对于基础组件了解也是必要的。
第三步:暂时没有想到什么。
下面分享下,我一般工作中Debug用到的工具吧。
网络封包分析软件:
Wireshark:功能强大的分析抓包分析工具,比较占资源。
smsniff:比较轻量工具,不占资源,以连接为单位,显示交互数据。
Dump分析工具:
Windows:
Windbg:通过加载插件,能用来分析Windows环境下所有内存镜像。(Windows高级调试,net高级调试这两本书能帮助你熟练使用它)
Linux:
Java:
JDK中提供的工具:
JPS:全称为JVM Process Status Tool ,显示指定系统内所有的HotSpot虚拟机进程。
jstat:全称为JVM Statistics Monitoring Tool 用于显示HotSpot 虚拟机各方面的运行数据。
jinfo:显示虚拟机的配置信息.
jmap:打印出某个java进程(使用pid)内存内的,所有object的情况(如:产生那些对象,及其数量)
jhat:用于分析heapdump文件,建立一个http/heml server,让用户可以在浏览器上查看分析结果。
jstack:Stack Trace for java .显示虚拟机的thread 快照
jvisualvm: GUI工具,可监控、性能评估、故障诊断主机上所有java进程的cpu,内存,线程使用情况.
jprofile:在java程序性能调试方便表现优越,推荐使用