版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 頁進程異常終止時根據(jù)backtrace定位問題的方法項目中經(jīng)常會遇到進程異常終止的問題,本文介紹的是根據(jù)log中打印出來的backtrace定位問題點的方法。1.如何獲取debug信息當(dāng)異常發(fā)生時,一般會有兩個地方保存backtrace和stack;(1)Logcat一般在mainlog里面,關(guān)鍵字是“DEBUG”;文件中一般在/data/tombstones,以tombstone_XX命名的文件;一般是有如下的格式:3-j.lld.fingerprint:1ETE/U930HD/U930HD:4.0.3/IML74K/eng.root.20121116.042147:eng/releas
2、e-keys1pid:3E2rtid:3BE/syatera/Jain/rild丈丈丈signal11(SIGSEGV,code1(SEGV_MAPERRrfaultaddr00000007rOOO0Oa628rllO0ff6c8r2aa86cll5r3aa8cll500000003r50000a628r64018f343r7ffffffffrSOigozac.rS013ai6cl3100189alerpOisrisip00000000splOOffhOSIr4017i9ebpc40182b96cpsr20000030#00PC0000fcb96/syst已工已:E已工已nu已一工j.1.so
3、PC000049已石/syst已工已:E已工已nu已一工j.1.soPC000070d0/syst已工已:E已工已nc已一工)丄.bo#03PC000052a6/syst已m/丄.so#04PC00005f30/syst已m/丄.so#05PC000064f2/syst已m/丄.soPC00012c0c/syst已.bo#07PC00012760/syst已.bo2工具及使用舉例主要用于定位的工具有:addr2line和objdump;使用中有兩個注意點:(1)必須使用帶symbol的目標(biāo)文件這兩個工具要結(jié)合帶symbol的目標(biāo)文件才能達到定位的目的;symbol文件在編譯過程中有,一般在最終
4、版本中的目標(biāo)文件是不帶symbol的。以聯(lián)芯的ril為例,其最終生成的目標(biāo)文件是out/target/product/U930HD/system/lib/libreference-ril.so中,而其symbol文件在out/target/product/U930HD/symbols/system/lib/libreference-ril.so我們最終使用的目標(biāo)文件是后者。(2)必須使用正確的工具版本Android在編譯的時候,會指定arm的交叉編譯器,我們分析問題模塊時,需要使用的工具版本必須和編譯過程中指定的arm編譯器一致;以聯(lián)芯為例,編譯時使用的gcc版本是prebuildt/linu
5、x-x86/toolchain/arm-linux-androideabi-4.4.x/bin中指定的以arm-linux-androideabi-xxx命名的工具,因此我們使用的分析工具也必須是這個路徑下的工具。2.1addr2line該工具可以根據(jù)debug信息中提供的address(如#00PCxxxxxxxx),直接定位到代碼行。使用及分析過程如下:在debug信息中看到,#00pc0000bb96/system/lib/libreference-ril.so#01pc000049e6/system/lib/libreference-ril.so#02pc000070d0/system
6、/lib/libreference-ril.so#03pc000052a6/system/lib/libril.so1.査看第一條出錯信息:arm-linux-androideabi-addr21ine-f-elibreference-ril.so0000bb96at_response_freeatchannel_mch.c:1071這告訴我們出錯的代碼在文件atchannel_mch.c的at_response_free中,在1071行;voidat_eSpnSe_fee(ATResponse大presponse)010570105801059010600106101062010630106
7、4010650106601067010680106901070但是at_respO知道其調(diào)01074:2.查看第二條出錯信息e(p_response-finalResponse);arm-linux-androidea!bi-addr2iinefs-piJbrfTbnce-ril.so000049e6requestRadiOPower吐賀00門託亓從?ATLineline;if(presponse=NULL)r&turii;p_Line=presponse-p_intEi/mEdi日tes;while(p_line1=NULL)ATLine*p七oFree;p_toFree=p_line;p_
8、line=p_line-p_next;Inse_free是ril的公共週用,其本身應(yīng)該沒有問題,問題應(yīng)該在其入?yún)?,這必用者;free(p_toFree);reference-ril.c:3808這告訴我們之前的at_response_free的調(diào)用者在文件reference-ril.c的requestRadioPower中,在3808行;03806:?endifonOff088isState=R.ADI.?03807:03B0B:atresponsefree(p_response);|03809:RILonRequestComplete(tfRILESUCCESSfNULL,Cl)這里調(diào)用的入
9、參p_response不是NULL,但是其內(nèi)部成員line為NULL,引起了SIGSEGV段錯誤。通過代碼流程的排查,if()/line3451/*tnrnoff*/-else/*tnrnon*/if()/line3625-:atresponsefree(presponse)/debug/line3670else/line3676at_response_free(p_re5ponse);/line3303發(fā)現(xiàn)在3670行有了一次free的操作,但是沒有將p_response置成NULL,形成了野指針,在3808行的時候,野指針不為NULL,作為有效入?yún)⑤斎?,?dǎo)致了上述的段錯誤。我們通過addr
10、2line定位到問題出現(xiàn)的點,縮小代碼排查范圍,達到了快速定位問題的目的。該工具分析過程中,必須結(jié)合源碼,才能根據(jù)代碼行分析問題的原因,如果沒有源碼,就必須依賴下面的工具來分析了。2.2objdump該工具是用來對目標(biāo)文件實施反匯編的工具,如果是帶symbol的目標(biāo)文件,反匯編后可以看到部分源碼,如果是不帶symbol的目標(biāo)文件,就只能看到匯編碼。00002af0:2af0:e92d41fUstmdbsp!rr4,r5,r6frlfr8f1匚2af4:4c26ldrpc,#152;(2b9u)2af6:fldOU5D1rstosrQf#12afa:bf38itcc2afc:2500movcc2
11、afe:2a00cmpr2x21300:bf08iteq2b02:045U5D1rreq不帶yimbol反匯編話結(jié)果帶symbol反匯編結(jié)果該工具使用及分析過程如下:在debug信息中看到,#00pc0000bb96/system/lib/libreference-ril.so#01pc000049e6/system/lib/libreference-ril.so#02pc000070d0/system/lib/libreference-ril.so#03pc000052a6/system/lib/libril.so1反匯編目標(biāo)文件arm-linux-androideabi-objdump-d
12、-S-llibreference-ril.solibreference-ril.S這之后生成目標(biāo)文件的反匯編代碼文件libreference-ril.S2査看錯誤信息(使用帶symbol的目標(biāo)文件匯編碼)在libreference-ril.S中查看0000bb96和000049e6,/home/ganhui1iang/LC/lc1810/develop/ap/base/android-403_r1/leadcore/hardware/ril/leadcore-ri1/atchannel_mchc:1071ATLinep_toFree;p_toFree=p_line;p_liiie=p_line
13、-p_next;freei:ptoFree-line);bb96:6860ldrrO,r4.#理|/home/ganhui1iang/LC/lc1810/develop/ap/toase/android-403_r1/leadcore/hardware/ril/leadcore-ril/reference-rilc:3808LOGD(rr=request-RadioPowertheg_dataca11s%disinitialized,rfi:i;:!/古addedtoyhuaiigyong2012-09-27end古/:!曰匸irmwgefree(presponse);49e4:980alclrrO,sp,#40;0 x2849e6:f007f8dlblJakiSc從查看的結(jié)果可以發(fā)現(xiàn),問題點的代碼行與addr2line定位出來的是一致的;在沒有源碼的情況下,我們只能分析到這里,知道這里的調(diào)用存在問題,可以用以指導(dǎo)有源碼的同事做進一步的代碼流程分析。3查看錯誤信息(使用不帶symbol的目標(biāo)文件匯編碼)在libreference-ril.S中查看0000bb96和000049e6,對于熟悉匯編碼的人可以通過以上定位到問題出現(xiàn)地方,達到相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋁單板藝術(shù)中心施工合同
- 新能源材料堆場租賃協(xié)議
- 屋頂人力資源租賃合同
- 融資貸款居間合同范例
- 融資借款協(xié)議三篇
- 蜘蛛人更換玻璃協(xié)議書(2篇)
- 公路檢測資質(zhì)掛鉤合同范本
- 集體土地所有權(quán)登記成果更新匯交服務(wù)合同
- 集體合同主要條款
- 住房代銷代理合同范例
- 文化地理學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年中國產(chǎn)蛋鴨濃縮料市場調(diào)查研究報告
- 2024-2030年全球及中國數(shù)據(jù)科學(xué)平臺行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2023-2024學(xué)年部編版道德與法治三年級上冊期末檢測題及答案(共3套)
- 職業(yè)健康及環(huán)境安全培訓(xùn)(共70張課件)
- 多源異構(gòu)日志關(guān)聯(lián)與融合
- 藥理學(xué)(浙江大學(xué))智慧樹知到答案2024年浙江大學(xué)
- 節(jié)電設(shè)備產(chǎn)品營銷計劃書
- 《幼兒教師的教育智慧:來自實踐現(xiàn)場的傾聽與對話》札記
- 績效考核管理辦法(15篇)
- 注冊安全工程師建筑施工專業(yè)實務(wù)
評論
0/150
提交評論