java - 如何分析生成的异常数量,按异常类或代码行分类
问题描述
我正在使用许多开源第三方库,飞行记录显示代码每秒产生数万个异常。
我如何追踪抛出了哪种类型的异常,以及它在源代码中被抛出的位置,以便我可以查看是否可以自己修复第三方代码?
据我所知,Java Mission Control 没有显示任何异常类型或来源的细分。
请不要推荐昂贵的商业分析器,因为这是一个开源项目。
解决方案
据我所知,Java Mission Control 没有显示任何异常类型或来源的细分。
这是不正确的,Java Mission Control 确实提供了该信息。
首先,您需要在 Flight Recorder 中启用异常跟踪(默认情况下只跟踪 java.lang.Error 后代)。
请参阅下面的飞行记录器设置屏幕截图。
一旦记录器,您需要转到“例外”报告。
在那里,您可以找到按类别分类的异常情况。“堆栈跟踪”视图将允许获得准确的堆栈跟踪。
I little JMC live hack:在“堆栈跟踪”视图中引入上下文菜单,然后选择“区分帧”>“行号”(参见上面的屏幕截图)。这将允许您查看行号。
如果您更喜欢 CLI 工具,请查看SJK(免责声明,这是我自己的 OSS 分析器)。例如,下面的命令会从您的 JFR 转储中生成异常的 SVG 火焰图。其他报告类型也很少。
java -jar sjk.jar ssa -f dump.jfr --jfr-event THROW --flame > throw_flame.svg
推荐阅读
- javascript - 如何从 UrlFetchApp.fetchAll 中捕获错误?
- c# - 循环两个列表
- reactjs - 如何在另一个函数中使用 .then 中的 setState 作为 ReactJS 中的参数
- javascript - react-hook-form 的问题 - 表单提交经常失败
- sapui5 - 评估升级 SAPUI5 库的影响
- python - ModuleNotFoundError:没有名为“debug_toolbar”的模块 Django 3.1
- c# - 我如何拒绝除 GET 请求之外的所有请求
- python - Python 和 Snowflake 如何将 Azure AD 用户名和密码添加到雪花连接,以便能够访问帐户并运行 ETL 脚本?
- excel - 一个字母代表所有人,但颜色不同
- visual-studio - MSBuild 是否也链接?