如何分析生成的异常数量,按异常类或代码行分类

问题描述 投票:3回答:2

我正在使用许多开放源代码的第三方库,并且飞行记录显示该代码每秒生成数万个异常。

如何跟踪抛出的异常类型以及在源代码中的异常位置,以便查看是否可以自行修复第三方代码?

据我所知,Java Mission Control没有显示异常类型或源的任何细分。

请不要推荐昂贵的商业分析器,因为这是一个开源项目。

java exception profiling jmc jfr
2个回答
4
投票

据我所知,Java Mission Control没有显示异常类型或源的任何细分。

这是不正确的,Java Mission Control确实提供了该信息。

首先,您需要在Flight Recorder中启用异常跟踪(默认情况下仅跟踪java.lang.Error后代)。

请参见下面的飞行记录器设置屏幕截图。

Flight Recorder options

一旦记录器,您需要转到“例外”报告。

您会发现按类别分类的例外情况。 “堆栈跟踪”视图将允许获取确切的堆栈跟踪。

Mission Control

我是个小JMC现场黑客:在“堆栈跟踪”视图上打开上下文菜单,然后选择“按以下项区分帧”>“行号”(请参见上面的屏幕截图)。这样您就可以看到行号。

如果您喜欢CLI工具,请查看SJK(免责声明,这是我自己的OSS分析器)。例如。下面的命令将从您的JFR转储生成SVG异常火焰图。其他报告类型也很少。

java -jar sjk.jar ssa -f dump.jfr --jfr-event THROW --flame > throw_flame.svg

2
投票

请不要推荐昂贵的商业分析器,因为这是一个开源项目。

[某些商业分析器为开源项目提供免费许可证,例如JProfiler

在JProfiler中,有一个探针可以显示按异常类分组的异常,并具有追溯到抛出它们的调用堆栈的回溯。

enter image description here

免责声明:我的公司开发了JProfiler。

© www.soinside.com 2019 - 2024. All rights reserved.