From c67c8e4ae336f7a56320d7fe4501f52ebce0aadf Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Tue, 23 Feb 2021 20:03:45 +0800 Subject: [PATCH] fix EnhancerByCGLIB class constructor exception table. #1690 --- .../java/com/taobao/arthas/core/advisor/Enhancer.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java b/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java index 7656b4c76..4076f44f2 100644 --- a/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java +++ b/core/src/main/java/com/taobao/arthas/core/advisor/Enhancer.java @@ -161,6 +161,15 @@ public class Enhancer implements ClassFileTransformer { } } + // https://github.com/alibaba/arthas/issues/1690 + if (AsmUtils.isEnhancerByCGLIB(className)) { + for (MethodNode methodNode : matchedMethods) { + if (AsmUtils.isConstructor(methodNode)) { + AsmUtils.fixConstructorExceptionTable(methodNode); + } + } + } + // 用于检查是否已插入了 spy函数,如果已有则不重复处理 GroupLocationFilter groupLocationFilter = new GroupLocationFilter();