Segment default debug 方法-重要

本文详细解析了一个浏览器进程崩溃的实例,通过分析错误日志,确定了导致崩溃的代码位置,并探讨了可能的原因,包括参数传递问题及客制化代码的影响。文章深入介绍了segment default的各部分含义,解释了addr2line工具的使用方法及其参数意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(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 工具
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值