版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第 頁進(jìn)程異常終止時(shí)根據(jù)backtrace定位問題的方法項(xiàng)目中經(jīng)常會遇到進(jìn)程異常終止的問題,本文介紹的是根據(jù)log中打印出來的backtrace定位問題點(diǎn)的方法。1.如何獲取debug信息當(dāng)異常發(fā)生時(shí),一般會有兩個(gè)地方保存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;使用中有兩個(gè)注意點(diǎn):(1)必須使用帶symbol的目標(biāo)文件這兩個(gè)工具要結(jié)合帶symbol的目標(biāo)文件才能達(dá)到定位的目的;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在編譯的時(shí)候,會指定arm的交叉編譯器,我們分析問題模塊時(shí),需要使用的工具版本必須和編譯過程中指定的arm編譯器一致;以聯(lián)芯為例,編譯時(shí)使用的gcc版本是prebuildt/linu
5、x-x86/toolchain/arm-linux-androideabi-4.4.x/bin中指定的以arm-linux-androideabi-xxx命名的工具,因此我們使用的分析工具也必須是這個(gè)路徑下的工具。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.査看第一條出錯(cuò)信息:arm-linux-androideabi-addr21ine-f-elibreference-ril.so0000bb96at_response_freeatchannel_mch.c:1071這告訴我們出錯(cuò)的代碼在文件atchannel_mch.c的at_response_free中,在1071行;voidat_eSpnSe_fee(ATResponse大presponse)010570105801059010600106101062010630106
7、4010650106601067010680106901070但是at_respO知道其調(diào)01074:2.查看第二條出錯(cuò)信息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段錯(cuò)誤。通過代碼流程的排查,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行的時(shí)候,野指針不為NULL,作為有效入?yún)⑤斎耄瑢?dǎo)致了上述的段錯(cuò)誤。我們通過addr
10、2line定位到問題出現(xiàn)的點(diǎn),縮小代碼排查范圍,達(dá)到了快速定位問題的目的。該工具分析過程中,必須結(jié)合源碼,才能根據(jù)代碼行分析問題的原因,如果沒有源碼,就必須依賴下面的工具來分析了。2.2objdump該工具是用來對目標(biāo)文件實(shí)施反匯編的工具,如果是帶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査看錯(cuò)誤信息(使用帶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),問題點(diǎn)的代碼行與addr2line定位出來的是一致的;在沒有源碼的情況下,我們只能分析到這里,知道這里的調(diào)用存在問題,可以用以指導(dǎo)有源碼的同事做進(jìn)一步的代碼流程分析。3查看錯(cuò)誤信息(使用不帶symbol的目標(biāo)文件匯編碼)在libreference-ril.S中查看0000bb96和000049e6,對于熟悉匯編碼的人可以通過以上定位到問題出現(xiàn)地方,達(dá)到相
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高考語文復(fù)習(xí)知識清單第2章文學(xué)類文本閱讀(一)小說專題01賞析小說故事情節(jié)(學(xué)生版+解析)
- 臍橙樹打藥安全責(zé)任書承包合同(2篇)
- 南京工業(yè)大學(xué)浦江學(xué)院《專業(yè)綜合實(shí)訓(xùn)(通信工程)》2022-2023學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《審計(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 多變的紙條說課稿
- 小石城7#樓 施工組織設(shè)計(jì)
- 南京工業(yè)大學(xué)浦江學(xué)院《建筑給水排水工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 《小石潭記》說課稿
- 小學(xué)音樂面試《哦十分鐘》說課稿
- 南京工業(yè)大學(xué)《中日比較文學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 當(dāng)代社會政策分析 課件 第五章 健康社會政策
- 建設(shè)項(xiàng)目使用草原可行性報(bào)告編寫規(guī)范
- 2024年安全月全員消防安全知識培訓(xùn)
- 交換機(jī)維護(hù)方案
- 2024防火窗技術(shù)規(guī)范
- 世界生態(tài)環(huán)境狀況簡介
- 2022年中國鐵路招聘考試試題及答案
- 安全標(biāo)準(zhǔn)化建設(shè)事件事故管理事故事件統(tǒng)計(jì)分析臺賬
- 中國風(fēng)書法練字字帖
- GB/T 43802-2024綠色產(chǎn)品評價(jià)物流周轉(zhuǎn)箱
- 扣好人生第一??圩訝幾鲂聲r(shí)代好少年班會課件
評論
0/150
提交評論