SuperIC社区_
标题: 【Mstar Andriod】【教你解析coredump】 [打印本页]
作者: jayden 时间: 2017-12-8 18:45
标题: 【Mstar Andriod】【教你解析coredump】
【Mstar Andriod】【教你解析coredump】
1. 自己先在code里手动产生一个coredump,当音量调到51时,就会产生coredump
MSrv_SSSound.cpp
MAPI_U8 MSrv_SSSound::SetVolume(MAPI_U8 u8Vol)
{
printf("----->>>>u8Vol3=%d\n",u8Vol);
if(u8Vol == 51)
{
// U8* u8Pionter = NULL;
printf("----->>>>Coredump jayden\n");
// u8Pionter = 0;
ASSERT(0); //1106行
}
}
2. 目前学习板子的coredump在var目录下面,
修改coredump在data目录下:
echo /data/%e.core.%p >/proc/sys/kernel/core_pattern
cat /proc/sys/kernel/core_pattern
3. copy coredump.1075.gz到U盘里,并放入程录序编绎目:Y:\sourcecode\TVOS_L_928_3.0.5.a1\supernova\projects\symbols\applications\bin
解压: gunzip./symbols/applications/bin/coredump.1075.gz
4. 进到projects的目录下执行
arm-none-linux-gnueabi-gdbsymbols/applications/bin/tvos
5.在gdb的debug環境下指向所模擬的路徑, 與所有so lib路徑
set solib-absolute-prefixsymbols/
6.在gdb的debug环境
(gdb)core symbols/applications/bin/coredump.1075
bt (back trace)
=> #0 0xb59ded5c in raise () from ./symbols/lib/libc.so.6
#1 0xb59e2838 inabort () from ./symbols/lib/libc.so.6
#2 0x00074238 inMSrv_SSSound::SetVolume (this=0xb5bb00fc <lock>, u8Vol=1 '\001',u8Vol@entry=51 '3')
at./src/MSrv_SSSound.cpp:1106
#3 0x00074a9c inMSrv_SSSound::SetAudioVolume (this=<optimized out>,volSrcType=<optimized out>, u8Vol=<optimized out>)
at./src/MSrv_SSSound.cpp:2559
#4 0x005581d4 inAudioManagerService::Client::setAudioVolume (this=0x12ad8a8, enSoundPath=0,volumn=51 '3')
atAudioManagerService.cpp:280
#5 0x005729b8 inBnAudioManager:
nTransact (this=0x12ad8a8, code=3, data=..., reply=0xbe8687c4,flags=16) atIAudioManager.cpp:1305
#6 0x000ceda8 inandroid::BBinder::transact (this=<optimized out>, code=3, data=...,reply=0xbe8687c4, flags=16)
at../../../src/binder/Binder.cpp:108
#7 0x000c146c inandroid::IPCThreadState::executeCommand (this=this@entry=0x12a5df0,cmd=<optimized out>)
at../../../src/binder/IPCThreadState.cpp:1084
#8 0x000c1b0c inandroid::IPCThreadState::getAndExecuteCommand (this=this@entry=0x12a5df0)
at../../../src/binder/IPCThreadState.cpp:435
#9 0x000c1bd0 inandroid::IPCThreadState::joinThreadPool (this=0x12a5df0, isMain=<optimizedout>)
at../../../src/binder/IPCThreadState.cpp:489
#10 0x00062884 in main (argc=1, argv=0xbe868ae4) atmain.cpp:1517
(gdb)
根据GDB分析出,/src/MSrv_SSSound.cpp:1106 MSrv_SSSound::SetAudioVolume里
也就是1106行的 ASSERT(0); ,即断言!删掉即可!
作者: jayden 时间: 2017-12-8 18:45







欢迎光临 SuperIC社区_ (/) |
Powered by Discuz! X3.3 |