Handle [native code] stack frames

Reviewed By: ashwinb, javache

Differential Revision: D5104078

fbshipit-source-id: edefc7cb7e1d401155372c917875ad8b14af94e9
This commit is contained in:
Adam Ernst 2017-05-22 15:40:36 -07:00 committed by Facebook Github Bot
parent a975c1e834
commit 0ee8786cd8
1 changed files with 13 additions and 9 deletions

View File

@ -174,17 +174,21 @@ public class StackTraceHelper {
String[] stackTrace = stack.split("\n"); String[] stackTrace = stack.split("\n");
StackFrame[] result = new StackFrame[stackTrace.length]; StackFrame[] result = new StackFrame[stackTrace.length];
for (int i = 0; i < stackTrace.length; ++i) { for (int i = 0; i < stackTrace.length; ++i) {
Matcher matcher = STACK_FRAME_PATTERN.matcher(stackTrace[i]); if (stackTrace[i].equals("[native code]")) {
if (!matcher.find()) { result[i] = new StackFrameImpl(null, stackTrace[i], -1, -1);
throw new IllegalArgumentException( } else {
Matcher matcher = STACK_FRAME_PATTERN.matcher(stackTrace[i]);
if (!matcher.find()) {
throw new IllegalArgumentException(
"Unexpected stack frame format: " + stackTrace[i]); "Unexpected stack frame format: " + stackTrace[i]);
} }
result[i] = new StackFrameImpl( result[i] = new StackFrameImpl(
matcher.group(2), matcher.group(2),
matcher.group(1) == null ? "(unknown)" : matcher.group(1), matcher.group(1) == null ? "(unknown)" : matcher.group(1),
Integer.parseInt(matcher.group(3)), Integer.parseInt(matcher.group(3)),
Integer.parseInt(matcher.group(4))); Integer.parseInt(matcher.group(4)));
}
} }
return result; return result;
} }