1. 程式人生 > >C語言中的Segmentation fault (core dumped) 解決辦法

C語言中的Segmentation fault (core dumped) 解決辦法

C語言中,Segmentation fault (core dumped)  即段錯誤

造成原因:段錯誤就是指訪問的記憶體超出了系統所給這個程式的記憶體空間。一般是隨意使用野指標或者陣列、陣列越界。

定位方法:

    1、用輸出語句除錯,常用在單文件除錯,在認為指標使用錯誤的地方輸出語句,用printf(“%d\n”, __LINE__); 打印出的最後一行數為段錯誤出現的行數。

(以此程式為例)

 (列印最後一行是第7行,證明程式在第8行出現段錯誤)

    2、用gdb除錯,常用在多文件除錯,gcc x.c -o x

                                                        gdb x

                                                        run

然後不斷地輸入run+回車,在執行出現段錯誤的時候會停止run,並定位到該文件的某一行,改行就是段錯誤出現的前一行

 

(列印最後一行是第7行,證明程式在第8行出現段錯誤)

判斷除錯方法:在出現段錯誤的前一行列印使用的指標的地址,如圖,指標的地址是nil,代表指標的野指標,對野指標的使用肯定會段錯誤!

 

 

這是我對段錯誤的理解,如有更好的辦法或者錯誤的地方,請大家指點出來

相關推薦

C言中Segmentation fault (core dumped) 解決辦法

C語言中,Segmentation fault (core dumped)  即段錯誤造成原因:段錯誤就是指訪問的記憶體超出了系統所給這個程式的記憶體空間。一般是隨意使用野指標或者陣列、陣列越界。定位方法:    1、用輸出語句除錯,常用在單文件除錯,在認為指標使用錯誤的地方

【ros_problems】ROS rqt外掛開啟失敗Segmentation fault (core dumped)的解決辦法

系統版本:ROS Inidgo, Ubuntu LTS 14.04.5 今天在搗鼓如何在QT-Creator編輯器裡支援Python程式碼的補全功能。 查了一些資料,說要安裝PyQt,遂下載安裝之。 後面偶然發現rqt外掛無法使用,每次開啟時提示: Segmentation fa

Segmentation fault (core dumped)的解決辦法

前幾天有同學程式碼出現了core dumped錯誤,然後就來找我幫忙。下邊我來整理一下core dumped錯誤的解決辦法。希望本文對同樣遇到此問題的你有所幫助。 先看以下的錯誤程式碼: 很明顯,是一個除0錯誤。 寫完程式碼,執行>>

如何解決"make: *** [all] Segmentation fault (core dumped)“這個問題?

今天遇到這個問題,這是在Linux下面經常會遇到的問題:make: *** [all] Segmentation fault (core dumped)?記錄下來一來幫助需要之人,二來記錄自己的成長曆

ros rviz: Segmentation fault (core dumped) 與 [rviz -1] process has died [pid 10134, exit code -6]

工作 alt ack 問題 依賴 art roc register pre 1. 執行roslaunch 文件打開 某rviz文件。出現了例如以下的錯誤: [rviz-1] process has died [pid 10134, exit code -6] 2. 執

記今天在執行程式時出現的segmentation fault(core dumped)

剛剛在複習資料結構的時候寫了一些單鏈表的操作,執行的時候出現segmentation fault(core dumped) 一番查錯後發現原來在寫初始化連結串列的時候形參少加了一級指標,修改完後可以正常執行,以為這就是造成segmentation fault 的原因。 過了一會想到我之前也有

當import matplotlib.pyplot as ply 出現Segmentation fault (core dumped)

當我在py檔案中匯入matplotlib.pyplot後,在linux shell 執行py檔案時,出現Segmentation fault (core dumped)錯誤提示,谷歌之後,找到了解決的方法: import matplotlib as mpl mpl.use(

【error】Segmentation fault (core dumped)

在安裝caffe時make, make all, make runtest, make pycaffe均成功完成 但是在make pytest時出現錯誤 Segmentation fault (core dumped) 如下 [[email protected]

segmentation fault(core dumped)

Segmentation fault 這個提示還是比較常見的,這個提示就是段錯誤,這是翻譯還是十分恰當的。 Core Dump 有的時候給我們呈現的翻譯很有趣是”吐核“,但是實際上比較貼切的翻譯是核心轉儲(是作業系統在程序收到某些訊號而終止執行時,將此時程序地址

關於Segmentation fault (core dumped)幾個簡單問題

有的程式可以通過編譯,但在執行時會出現Segment fault(段錯誤)。這通常都是指標錯誤引起的。但這不像編譯錯誤一樣會提示到檔案一行,而是沒有任何資訊。一種辦法是用gdb的step, 一步一步尋找。但要step一個上萬行的程式碼讓人難以想象。 我們還有更好的辦法,這就

Segmentation fault (core dumped)除錯資訊處理方式

Q:怎麼看core檔案是哪個程式產生的? A:file core.36833 有的程式可以通過編譯,但在執行時會出現Segment fault(段錯誤)。這通常都是指標錯誤引起的。但這不像編譯錯誤一樣會提示到檔案一行,而是沒有任何資訊。一種辦法是用gdb的step,一

GDB除錯php擴充套件錯誤(Segmentation fault (core dumped))

(gdb) print (char *)(executor_globals.function_state_ptr->function)->common.function_name (gdb) print (char *)executor_globals.act

Python 指令碼執行時Segmentation fault (core dumped)

問題如題描述,python 執行過程中直接導致python 直譯器崩潰(不是異常,直接崩潰),下面簡敘一下debug過程: google查詢結果顯示這種情況多數是因為Python裡的C擴充套件導致(訪問了非法記憶體區域,可能和C自身記憶體管理機制有關),而且

Linux下Segmentation fault(core dumped)簡單除錯方法

** 什麼是Segmentation fault? ** Segmentation fault就是段錯誤,一般指訪問的記憶體超出了系統給這個程式所設定的記憶體空間,例如訪問了不存在的記憶體地址、訪問了系統保護的記憶體地址、訪問了只讀的記憶體地址等等情況

執行緒傳遞結構體引數(Segmentation fault (core dumped))

1. 執行緒傳遞結構體引數, 1)把定義的結構體換成指標名字  -->typedef   typedef struct list{ regp reg_head; car_iop car_i

錯誤:Segmentation fault (core dumped)

該錯誤出現,是在我將C的程式碼在linux中編譯後執行的時候報錯; 科普後瞭解: Segmentation fault :這個提示還是比較常見的,這個提示就是段錯誤 Core Dump :有的時候給我們呈現的翻譯很有趣是”吐核“,但是實際上比較貼切的翻譯是核心轉儲(是作

解決c言中scanf("%c",&c)吃掉回車或者空格字元的問題

#include <stdio.h> int main() { int i; char *p;//有十個元素的字元陣列 for(i=0;i<10;i++){ scanf("%c",(p+i)); } for(i=6;i<10;i++)

c言中printf函式列印char型變數0xFF,輸出為0xFFFFFFFF的解決方法

問題描述:在編寫udp程式解析資料的時候,發現接收的char型變數為0xFF,但是使用printf後列印為0xFFFFFFFF,除錯程式查詢原因後發現使用char時,對於printf來說其值為0xFFFFFFFF。原因是%x要求的是無符號整形變數,你傳入的是char型,這裡有

C++中Segmentation fault(Core Dump)錯誤處理

什麼是Core Dump? Core的意思是記憶體, Dump的意思是扔出來, 堆出來. 開發和使用Unix程式時, 有時程式莫名其妙的down了, 卻沒有任何的提示(有時候會提示core dumped). 這時候可以檢視一下有沒有形如core.程序號的檔案生成, 這個檔

關於C言中switch的case裡定義變數解決編譯報錯

時間緊促,粗糙記錄一下! 一: case 1: int a; break; case 2: ...... 二: case 1: char *p = malloc(......); ....... case 2: ...... 像一那樣在case裡面直接定義變數時,編譯器一