版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
演武場之“我與經(jīng)典代碼”分享—段錯誤調(diào)試編制日期:2016-1-4編制人員:馬MM目錄演講目的段錯誤調(diào)試方法代碼性質(zhì)黑代碼EPS組件模塊-SPS-PAI_V11問題引入通常linux環(huán)境下的項目開發(fā)中,經(jīng)常會遇到段錯誤‘Segmentationfault’問題,這里我對linux環(huán)境下出現(xiàn)的段錯誤做一個簡單小結(jié)。段錯誤的產(chǎn)生段錯誤是指訪問的內(nèi)存超出了系統(tǒng)給程序所設(shè)定的內(nèi)存空間,例如訪問了不存在的內(nèi)存地址、訪問了系統(tǒng)保護(hù)的內(nèi)存地址、訪問了只讀的內(nèi)存地址等等情況。int*ptr=NULL;
*ptr=0;char*ptr="test";strcpy(ptr,"TEST");4訪問了只讀的內(nèi)存地址 charc='c'; printf("%s\n",c); intb=10;
printf("%s\n",b);在打印字符串的時候,實際上是打印某個地址開始的所有字符,但是當(dāng)你想把整數(shù)當(dāng)字符串打印的時候,這個整數(shù)被當(dāng)成了字符串的地址,然后printf從這個地址開始去打印字符,直到某個位置上的值為\0。所以,如果這個整數(shù)代表的地址不存在或者不可訪問,自然也是訪問了不該訪問的內(nèi)存——segmentationfault5我們的代碼1在我們的代碼中也出現(xiàn)過這樣的段錯誤。
chartest[1];
printf(“%c”,test[1000000000]);這里是比較極端的例子,但是實際工作中經(jīng)常會出現(xiàn),是個明顯的數(shù)組越界的問題,這個地址可能是根本就不存在的char**ppstr=NULL;printf(“*ppstr==%s\n”,(*ppstr));memcpy(*ppstr,“test”,4);memset(…7我們的代碼2錯在pathName
=
strcat(“/proc”,fileName);這行
“/proc”,是靜態(tài)字符串,字符串常量,他的存儲空間在編譯期間已經(jīng)分配,大小是固定的,不能對字符串常量進(jìn)行賦值。
你使用strcat,將fileName向"/proc"后面添加,當(dāng)然會出錯,
仔細(xì)閱讀一下strcat的用法DESCRIPTIONThestrcat()functionappendsthesrcstringtothedeststring,overwritingthenullbyte('\0')attheendofdest,andthenaddsaterminatingnullbyte.Thestringsmaynotoverlap,andthedeststringmusthaveenoughspacefortheresult.8我們的代碼3把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的‘\0’)。src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。使用printf輸出信息這個是看似最簡單但往往很多情況下十分有效的調(diào)試方式,可以說是程序員用的最多的調(diào)試方式。為了方便使用這種方法,可以使用條件編譯指令#ifdefDEBUG和#endif把printf函數(shù)包起來(#if0和#endif)。9段錯誤的調(diào)試方法使用gcc和gdb在編譯階段加上-g參數(shù)gcc-gmain.c-omain使用gdb命令調(diào)試程序10段錯誤的調(diào)試方法11使用gdb命令調(diào)試程序12進(jìn)入gdb后,運(yùn)行程序1、在使用指針時,定義了指針后記得初始化指針,在使用的時候記得判斷是否為NULL。2、在使用數(shù)組時,注意數(shù)組是否被初始化,數(shù)組下標(biāo)
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中國毛滌針織粗紡面料市場調(diào)查研究報告
- 幼兒園地理課程設(shè)計
- 寵物店java課程設(shè)計
- 山東力明科技職業(yè)學(xué)院《理論與實務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東理工大學(xué)《交互設(shè)計基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東勞動職業(yè)技術(shù)學(xué)院《紀(jì)錄影像創(chuàng)作》2023-2024學(xué)年第一學(xué)期期末試卷
- 無機(jī)材料學(xué)課程設(shè)計
- 中班大白菜課程設(shè)計
- 方箱注塑模課程設(shè)計
- 支架類課程設(shè)計
- 病理學(xué)知到智慧樹章節(jié)測試課后答案2024年秋溫州醫(yī)科大學(xué)
- 學(xué)習(xí)對新時代馬克思主義理論研究和建設(shè)工程重要指示心得體會
- 2023年湖北交投智能檢測股份有限公司社會招聘筆試真題
- 鋼結(jié)構(gòu)施工環(huán)保方案
- 痛經(jīng)中醫(yī)治未病干預(yù)方案
- 眼科考試題含答案
- 心理健康與大學(xué)生活學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 國開汽車學(xué)院《項目管理》形考作業(yè)1-4答案
- 借款協(xié)議(父母借款給子女買房協(xié)議)(二篇)
- 外研版英語2024七年級上冊全冊單元知識清單(記憶版)
- 國家開放大學(xué)電大本科《工程經(jīng)濟(jì)與管理》2023-2024期末試題及答案(試卷代號:1141)
評論
0/150
提交評論