Skip to content

Commit 15bbf52

Browse files
committed
Merge pull request SquareSquash#5 from square/edenman/java-token-in-backtraces
Add a _JAVA_ token to our backtraces so squash can try to deobfuscate
2 parents 3274699 + b66fdb1 commit 15bbf52

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

src/main/java/com/squareup/squash/SquashBacktrace.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
/** Creates the Squash stacktrace format for serialization by gson. */
1212
public final class SquashBacktrace {
1313

14+
// TODO get the actual thread identifier if we can.
1415
public static final String THREAD_0 = "Thread 0";
16+
// This lets Squash know that the stacktrace is java-style and can contain obfuscated classes.
17+
public static final String JAVA_PREFIX = "_JAVA_";
1518

1619
private SquashBacktrace() {
1720
// Should not be instantiated: this is a utility class.
@@ -34,6 +37,7 @@ private static List<List<Object>> getStacktraceArray(Throwable error) {
3437
List<List<Object>> stackElems = new ArrayList<List<Object>>();
3538
for (StackTraceElement element : error.getStackTrace()) {
3639
List<Object> elementList = new ArrayList<Object>();
40+
elementList.add(JAVA_PREFIX);
3741
elementList.add(element.getFileName());
3842
elementList.add(element.getLineNumber());
3943
elementList.add(element.getMethodName());

src/test/java/com/squareup/squash/SquashEntryTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,11 @@ private void assertBacktracesMatch(StackTraceElement[] myLittleStackTrace,
6464
for (int i = 0, stackElementsSize = stackElements.size(); i < stackElementsSize; i++) {
6565
List<Object> stackElement = stackElements.get(i);
6666
StackTraceElement expected = myLittleStackTrace[i];
67-
assertThat(stackElement.get(0)).isEqualTo(expected.getFileName());
68-
assertThat(((Double) stackElement.get(1)).intValue()).isEqualTo(expected.getLineNumber());
69-
assertThat(stackElement.get(2)).isEqualTo(expected.getMethodName());
70-
assertThat(stackElement.get(3)).isEqualTo(expected.getClassName());
67+
assertThat(stackElement.get(0)).isEqualTo(SquashBacktrace.JAVA_PREFIX);
68+
assertThat(stackElement.get(1)).isEqualTo(expected.getFileName());
69+
assertThat(((Double) stackElement.get(2)).intValue()).isEqualTo(expected.getLineNumber());
70+
assertThat(stackElement.get(3)).isEqualTo(expected.getMethodName());
71+
assertThat(stackElement.get(4)).isEqualTo(expected.getClassName());
7172
}
7273
}
7374

0 commit comments

Comments
 (0)