From 26fb7f33fbad028fdd15a7bca4ec1a1f942d30a0 Mon Sep 17 00:00:00 2001 From: Skylot Date: Thu, 15 Jun 2023 21:12:01 +0100 Subject: [PATCH] fix(script): use script log for show stages exceptions (#1912) --- .../kotlin/jadx/plugins/script/runtime/data/Debug.kt | 8 ++++++++ .../jadx/plugins/script/runtime/data/Stages.kt | 12 +++++++++--- .../jadx.plugins.script.runtime.JadxScriptTemplate | 0 3 files changed, 17 insertions(+), 3 deletions(-) delete mode 100644 jadx-plugins/jadx-script/jadx-script-runtime/src/main/resources/META-INF/kotlin/script/templates/jadx.plugins.script.runtime.JadxScriptTemplate diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Debug.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Debug.kt index 497854359..6cc08be5f 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Debug.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Debug.kt @@ -23,4 +23,12 @@ class Debug(private val jadx: JadxScriptInstance) { fun printPasses() { jadx.internalDecompiler.root.passes.forEach { jadx.log.info { it.name } } } + + fun catchExceptions(label: String = "", code: () -> Unit) { + try { + code.invoke() + } catch (e: Throwable) { + jadx.log.error(e) { "Exception in '$label'" } + } + } } diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt index d75e13923..7187aa949 100644 --- a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt +++ b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/kotlin/jadx/plugins/script/runtime/data/Stages.kt @@ -16,7 +16,9 @@ class Stages(private val jadx: JadxScriptInstance) { ) { override fun visit(mth: MethodNode) { mth.instructions?.let { - block.invoke(mth, it) + jadx.debug.catchExceptions("Method instructions visit") { + block.invoke(mth, it) + } } } }) @@ -37,7 +39,9 @@ class Stages(private val jadx: JadxScriptInstance) { ) { override fun visit(mth: MethodNode) { mth.basicBlocks?.let { - block.invoke(mth, it) + jadx.debug.catchExceptions("Method blocks visit") { + block.invoke(mth, it) + } } } }) @@ -51,7 +55,9 @@ class Stages(private val jadx: JadxScriptInstance) { ) { override fun visit(mth: MethodNode) { mth.region?.let { - block.invoke(mth, it) + jadx.debug.catchExceptions("Method region visit") { + block.invoke(mth, it) + } } } }) diff --git a/jadx-plugins/jadx-script/jadx-script-runtime/src/main/resources/META-INF/kotlin/script/templates/jadx.plugins.script.runtime.JadxScriptTemplate b/jadx-plugins/jadx-script/jadx-script-runtime/src/main/resources/META-INF/kotlin/script/templates/jadx.plugins.script.runtime.JadxScriptTemplate deleted file mode 100644 index e69de29bb..000000000