1. 程式人生 > >Segment default debug 方法-重要

Segment default debug 方法-重要

(1)現象: [6c6f6f70] *pgd=00000000

Pid: 2838, comm:      WebViewCoreThre CPU: 0    Tainted: P             (3.0.13 #1) PC is at 0x9f5c4302 LR is at 0x9f5c42f3 pc : [<9f5c4302>]    lr : [<9f5c42f3>]    psr: 00000030 sp : 49682518  ip : 00000000  fp : 9f6626c3 r10: 012e87b8  r9 : 00000000  r8 : 00000001 r7 : 014e5ca8  r6 : 00000000  r5 : 9f6b03d4  r4 : 01657e08 r3 : 0000011a  r2 : 00000116  r1 : 015f9010  r0 : 6c6f6f70 Flags: nzcv  IRQs on  FIQs on  Mode USER_32  ISA Thumb  Segment user Control: 10c53c7d  Table: 0dba404a  DAC: 00000015

(2)dump 出 maps 資訊,找出PC指標對應的segment。 #cat /proc/2869/maps     (2869 為browser 的程序pid) ............................................... ............................................... 9f500000-9f6a4000 r-xp 00000000 00:12 666        /system/lib/libchromium_net.so ............................................... ................................................

(3)算出出錯的偏移量: 0x9f5c4302-9f500000 =0xc4302

(4)用addr2line工具查了一把,定位code的位置  

  又因為*pgd=00000000,所以懷疑第一個引數是NULL,所以是否要在這裡加上NULL的判斷呢,因為skyworth有對browser有客製化, 對browser退出時的一些場景不再做save了。

QA: (1)segment default各個名稱含義 (2)addr2line 引數的含義 (3)用那個addr2line 工具