Skip to content

Commit 9240d3f

Browse files
author
Lauri Alanko
committed
Add PC value and platform to native stack frames
1 parent 3448e7d commit 9240d3f

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/internal/threaddump/ThreadDumpParser.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ private SentryStackTrace parseStacktrace(
214214
frame.setPackage(nativeRe.group("mapinfo"));
215215
frame.setFunction(nativeRe.group("function"));
216216
frame.setLineno(getInteger(nativeRe, "fnoffset", null));
217+
frame.setInstructionAddr("0x" + nativeRe.group("pc"));
218+
frame.setPlatform("native");
219+
217220
frames.add(frame);
218221
lastJavaFrame = null;
219222
} else if (matches(javaRe, text)) {

sentry-android-core/src/test/java/io/sentry/android/core/AnrV2IntegrationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,8 @@ class AnrV2IntegrationTest {
305305
)
306306
assertEquals("__start_thread", firstFrame.function)
307307
assertEquals(64, firstFrame.lineno)
308+
assertEquals("0x00000000000530b8", firstFrame.instructionAddr)
309+
assertEquals("native", firstFrame.platform)
308310
},
309311
argThat<Hint> {
310312
val hint = HintUtils.getSentrySdkHint(this)

sentry-android-core/src/test/java/io/sentry/android/core/internal/threaddump/ThreadDumpParserTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,14 @@ class ThreadDumpParserTest {
9999
assertEquals("syscall", lastFrame.function)
100100
assertEquals(28, lastFrame.lineno)
101101
assertNull(lastFrame.isInApp)
102+
assertEquals("0x000000000004c35c", lastFrame.instructionAddr)
103+
assertEquals("native", lastFrame.platform)
102104

103105
val nosymFrame = frames.get(21)
104106
assertEquals("/apex/com.android.art/javalib/core-oj.jar", nosymFrame.`package`)
105107
assertNull(nosymFrame.function)
106108
assertNull(nosymFrame.lineno)
109+
assertEquals("0x00000000000ec474", nosymFrame.instructionAddr)
107110

108111
val spaceFrame = frames.get(14)
109112
assertEquals(
@@ -112,16 +115,20 @@ class ThreadDumpParserTest {
112115
spaceFrame.`package`)
113116
assertNull(spaceFrame.function)
114117
assertNull(spaceFrame.lineno)
118+
assertEquals("0x00000000000306f0", spaceFrame.instructionAddr)
115119

116120
val offsetFrame = frames.get(145)
117121
assertEquals("/system/framework/framework.jar (offset 0x12c2000)", offsetFrame.`package`)
118122
assertNull(offsetFrame.function)
119123
assertNull(offsetFrame.lineno)
124+
assertEquals("0x00000000002c8e18", offsetFrame.instructionAddr)
125+
assertNull(offsetFrame.addrMode)
120126

121127
val deletedFrame = frames.get(117)
122128
assertEquals("/memfd:jit-cache (deleted) (offset 0x2000000)", deletedFrame.`package`)
123129
assertEquals("kotlinx.coroutines.DispatchedTask.run", deletedFrame.function)
124130
assertEquals(1816, deletedFrame.lineno)
131+
assertEquals("0x00000000020b89d8", deletedFrame.instructionAddr)
125132
}
126133

127134
@Test

0 commit comments

Comments
 (0)