版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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)給程序所設定的內(nèi)存空間,例如訪問了不存在的內(nèi)存地址、訪問了系統(tǒng)保護的內(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);在打印字符串的時候,實際上是打印某個地址開始的所有字符,但是當你想把整數(shù)當字符串打印的時候,這個整數(shù)被當成了字符串的地址,然后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)分配,大小是固定的,不能對字符串常量進行賦值。
你使用strcat,將fileName向"/proc"后面添加,當然會出錯,
仔細閱讀一下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進入gdb后,運行程序1、在使用指針時,定義了指針后記得初始化指針,在使用的時候記得判斷是否為NULL。2、在使用數(shù)組時,注意數(shù)組是否被初始化,數(shù)組下標
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華師大版初中科學空氣的存在(30課件)
- 8《紅樓春趣》核心素養(yǎng)分層學習任務單-2022-2023學年五年級語文下冊新課標(部編版)
- 防城港市重點中學2023-2024學年高三下學期考前模擬數(shù)學試題
- 2024年贛州客運資格證考試內(nèi)客
- 2024年荷澤客運從業(yè)資格證
- 2024年宜賓c1道路客運輸從業(yè)資格證怎么考
- 2024年南昌客運從業(yè)資格證要考幾門課
- 2024年陜西2024年客運從業(yè)資格證模擬考試題答案
- 2024年南寧客運從業(yè)資格證實際操作考試技巧
- 吉首大學《國際貿(mào)易實務B》2021-2022學年第一學期期末試卷
- 租地種香蕉合同
- 統(tǒng)編版 七年級上冊(2024修訂) 第四單元 13 紀念白求恩 課件
- 副總經(jīng)理招聘面試題及回答建議(某大型國企)
- 期中測試卷(試題)-2024-2025學年統(tǒng)編版語文五年級上冊
- 建筑工地臺風過后復工復產(chǎn)工作方案
- (高清版)JTGT 3331-04-2023 多年凍土地區(qū)公路設計與施工技術(shù)規(guī)范
- 增值服務具體方案怎么寫范文
- 企業(yè)評標專家推薦表
- 設備故障報修維修記錄單
- 老年性便秘(中醫(yī)老年病學)PPT參考課件
- 《漢代的服飾文化》PPT課件.ppt
評論
0/150
提交評論