提交 19ca8a09 编写于 作者: S Skylot

chore: resolve minor code issues in debug info parser

上级 cf5bfc29
......@@ -17,7 +17,7 @@ import jadx.core.dex.visitors.JadxVisitor;
import jadx.core.dex.visitors.blocksmaker.BlockSplitter;
import jadx.core.dex.visitors.ssa.SSATransform;
import jadx.core.utils.ErrorsCounter;
import jadx.core.utils.exceptions.DecodeException;
import jadx.core.utils.Utils;
import jadx.core.utils.exceptions.JadxException;
@JadxVisitor(
......@@ -40,11 +40,13 @@ public class DebugInfoParseVisitor extends AbstractVisitor {
processDebugInfo(mth, debugOffset);
}
} catch (Exception e) {
LOG.error("Error to parse debug info: {}", ErrorsCounter.formatMsg(mth, e.getMessage()), e);
mth.addComment("JADX WARNING: Error to parse debug info: "
+ ErrorsCounter.formatMsg(mth, e.getMessage())
+ '\n' + Utils.getStackTrace(e));
}
}
private void processDebugInfo(MethodNode mth, int debugOffset) throws DecodeException {
private void processDebugInfo(MethodNode mth, int debugOffset) {
InsnNode[] insnArr = mth.getInstructions();
DebugInfoParser debugInfoParser = new DebugInfoParser(mth, debugOffset, insnArr);
List<LocalVar> localVars = debugInfoParser.process();
......@@ -107,8 +109,8 @@ public class DebugInfoParseVisitor extends AbstractVisitor {
int line = insn.getSourceLine();
if (line != 0) {
mth.setSourceLine(line - 1);
return;
}
return;
}
}
}
......
......@@ -10,7 +10,6 @@ import jadx.core.dex.instructions.args.RegisterArg;
import jadx.core.dex.nodes.DexNode;
import jadx.core.dex.nodes.InsnNode;
import jadx.core.dex.nodes.MethodNode;
import jadx.core.utils.exceptions.DecodeException;
public class DebugInfoParser {
private static final int DBG_END_SEQUENCE = 0x00;
......@@ -50,7 +49,7 @@ public class DebugInfoParser {
this.insnByOffset = insnByOffset;
}
public List<LocalVar> process() throws DecodeException {
public List<LocalVar> process() {
boolean varsInfoFound = false;
resultList = new ArrayList<>();
......@@ -142,15 +141,11 @@ public class DebugInfoParser {
}
default: {
if (c >= DBG_FIRST_SPECIAL) {
int adjustedOpCode = c - DBG_FIRST_SPECIAL;
int addrInc = adjustedOpCode / DBG_LINE_RANGE;
addr = addrChange(addr, addrInc, line);
line += DBG_LINE_BASE + adjustedOpCode % DBG_LINE_RANGE;
setLine(addr, line);
} else {
throw new DecodeException("Unknown debug insn code: " + c);
}
int adjustedOpCode = c - DBG_FIRST_SPECIAL;
int addrInc = adjustedOpCode / DBG_LINE_RANGE;
addr = addrChange(addr, addrInc, line);
line += DBG_LINE_BASE + adjustedOpCode % DBG_LINE_RANGE;
setLine(addr, line);
break;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册