README.txt
1 Step 1
2
3 If you see a native crash in the bugreport and the PC/LR are pointing to the
4 code cache address range*, copy them into codePC and codeLR in gdbjithelper.c,
5 respectively.
6
7 *Caveats: debuggerd doesn't know the range of code cache. So apply this tool if
8 the crashing address is not contained by any shared library.
9
10 #00 pc 463ba204
11 #01 lr 463ba1c9 <unknown>
12
13 code around pc:
14 463ba1e4 4300e119 4284aa7a f927f7b7 40112268
15 463ba1f4 419da7f8 00002000 01000100 00080000
16 463ba204 4191debc 01010000 4284aa74 68b00054
17 463ba214 045cf205 cc016468 0718f2a5 d0102800
18 463ba224 4c13c701 a20aa108 efb0f775 e008e010
19
20 code around lr:
21 463ba1a8 42e19e58 f2050050 cc01045c 0718f2a5
22 463ba1b8 d00f2800 4c13c701 a20aa108 efe4f775
23 463ba1c8 e007e010 29006bf8 6e77dc01 a10347b8
24 463ba1d8 ef60f775 6db1480b 1c2d4788 4300e119
25 463ba1e8 4284aa7a f927f7b7 40112268 419da7f8
26
27
28 Step 2
29
30 Push $OUT/EXECUTABLES/gdbjithelper_intermediates/LINKED/gdbjithelper to
31 /system/bin on the device or emulator
32
33
34 Step 3
35
36 Debug the executable as usual:
37
38 adb forward tcp:5039 tcp:5039
39 adb shell gdbserver :5039 /system/bin/gdbjithelper &
40 arm-eabi-gdb $OUT/symbols/system/bin/gdbjithelper
41 (gdb) tar r :5039
42 Remote debugging using :5039
43 Remote debugging from host 127.0.0.1
44 gdb: Unable to get location for thread creation breakpoint: requested event is not supported
45 __dl__start () at bionic/linker/arch/arm/begin.S:35
46 35 mov r0, sp
47 gdb: Unable to get location for thread creation breakpoint: requested event is not supported
48 Current language: auto; currently asm
49 (gdb) c
50 Continuing.
51 [New Thread 596]
52 codePC[0]: 0x4300e119
53 codePC[1]: 0x4284aa7a
54 :
55
56
57 Step 4
58
59 Hit ctrl-C
60
61 Issue the following command to see code around PC
62 x /20i (char *) &codePC+1
63
64 Issue the following command to see code around LR
65 x /20i (char *) &codeLR+1
66