怎樣用GDB調(diào)試core文件
1、祭出linux下經(jīng)典的調(diào)試器GDB,首先帶著core文件載入程序:gdb exefile core,這里需要注意的這個(gè)core文件必須是exefile產(chǎn)生的,否則符號(hào)表會(huì)對(duì)不上。
2、從指定文件中讀取符號(hào)表。-se file 從指定文件中讀取符號(hào)表信息,并把他用在可執(zhí)行文件中。-core file -c file 調(diào)試時(shí)core dump的core文件。-directory directory -d directory 加入一個(gè)源文件的搜索路徑。
3、要檢查一個(gè) core 文件,首先用 gdb 可執(zhí)行文件名 來(lái)調(diào)試產(chǎn)生core文件的可執(zhí)行程序: 命令 core會(huì)分析 可執(zhí)行程序名.core 文件 注:如果當(dāng)前不是 core 文件所在目錄,首先要執(zhí)行 dir /可執(zhí)行程序名.core的路徑/。
怎么打開(kāi)core文件
1、要使用Vim編輯器打開(kāi)core-site.xml文件,先在終端中進(jìn)入存儲(chǔ)該文件的目錄,使用命令“vim core-site.xml”打開(kāi)文件。
2、CDR文件其實(shí)就是CorelDraw圖像制作軟件文件,那么需要打開(kāi)CDR文件就很簡(jiǎn)單了,CDR文件屬于CorelDraw專用文件存儲(chǔ)格式,使用匹配軟件打開(kāi)瀏覽,你需要安裝CoreDraw相關(guān)軟件后才能打開(kāi)該圖形文件。
3、cdr文件怎么打開(kāi)?知道了cdr文件其實(shí)就是CorelDraw圖像制作軟件文件,那么需要打開(kāi)cdr文件就很簡(jiǎn)單了,CDR文件屬于CorelDraw專用文件存儲(chǔ)格式,必須使用匹配軟件才能打開(kāi)瀏覽,你需要安裝CoreDraw相關(guān)軟件后才能打開(kāi)該圖形文件。
4、首先是運(yùn)行程序遇到這樣的錯(cuò)誤段錯(cuò)誤(核心已轉(zhuǎn)儲(chǔ))。打開(kāi)產(chǎn)生core文件的指令。再次運(yùn)行出現(xiàn)錯(cuò)誤的程序。使用gdb指令運(yùn)行core文件,排查錯(cuò)誤。
5、在桌面上找到CorelDRAW軟件了,點(diǎn)擊打開(kāi)。這個(gè)cdr格式的文件是由一款名為coreldraw軟件產(chǎn)生的,使用它默認(rèn)保存的格式就是cdr。我們打開(kāi)CorelDRAW軟件,在里面我們點(diǎn)擊文件-打開(kāi),如圖所示。
linux下終端運(yùn)行文件,代碼沒(méi)有錯(cuò)誤,為什么出現(xiàn)段錯(cuò)誤。
1、主要有以下幾個(gè)方面的原因:內(nèi)存訪問(wèn)出錯(cuò) 這類問(wèn)題的典型代表就是數(shù)組越界。非法內(nèi)存訪問(wèn) 出現(xiàn)這類問(wèn)題主要是程序試圖訪問(wèn)內(nèi)核段內(nèi)存而產(chǎn)生的錯(cuò)誤。棧溢出 Linux默認(rèn)給一個(gè)進(jìn)程分配的棧空間大小為8M。
2、pthread_t mythd;if(0!=pthread_create(&mythd,0,threadTest,0))printf(create error\n);pthread_create函數(shù)建立線程,并將新建線程ID保存到mythd中。如果將新建線程ID向地址0保存,會(huì)發(fā)生越界錯(cuò)誤。
3、說(shuō)明你的代碼在指針這里出了問(wèn)題。。最怕的是編譯過(guò)了但是程序跑飛了的這種邏輯錯(cuò)誤。改都不知道怎么改。。
4、dmesg可以在應(yīng)用程序crash掉時(shí),顯示內(nèi)核中保存的相關(guān)信息。如下所示,通過(guò)dmesg命令可以查看發(fā)生段錯(cuò)誤的程序名稱、引起段錯(cuò)誤發(fā)生的內(nèi)存地址、指令指針地址、堆棧指針地址、錯(cuò)誤代碼、錯(cuò)誤原因等。
5、= 5;proc(&mem-memc);return 0;} 這個(gè)是編譯無(wú)錯(cuò),運(yùn)行到最后報(bào)段錯(cuò)誤。后來(lái)將將stMem *mem改為stMem mem后其他的相應(yīng)修改就沒(méi)錯(cuò)了。應(yīng)該是指針必須指向某個(gè)數(shù)據(jù)或結(jié)構(gòu)。就是不知道你的錯(cuò)誤是不是和我的一樣。