1. 程式人生 > >GCC如何產生core dump

GCC如何產生core dump

先決條件

1.安裝apport(automatically generate crash reports for debugging)

2.修改/etc/security/limits.conf檔案,使允許core dump,或者用ulimit -c unlimited設定core dump檔案的大小為unlimited

3.C/C++的編譯開關-g(產生除錯符號)

######執行編譯好的程式testc(我的程式)

[email protected]:~/testc/bin/Debug$ ./testc

######下面一行顯示了core dumped表示成功,core檔案在/var/crash或者在當前目錄

段錯誤 (core dumped)

[email protected]
:~/testc/bin/Debug$ ls

######果然在當前目錄

core testc

######gdb一下

[email protected]:~/testc/bin/Debug$ gdb testc core

GNU gdb 6.8-debian

Copyright (C) 2008 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "i486-linux-gnu"...

warning: Can't read pathname for load map: Input/output error.

Reading symbols from /usr/lib/libstdc++.so.6...done.

Loaded symbols for /usr/lib/libstdc++.so.6

Reading symbols from /lib/tls/i686/cmov/libm.so.6...done.

Loaded symbols for /lib/tls/i686/cmov/libm.so.6

Reading symbols from /lib/libgcc_s.so.1...done.

Loaded symbols for /lib/libgcc_s.so.1

Reading symbols from /lib/tls/i686/cmov/libc.so.6...done.

Loaded symbols for /lib/tls/i686/cmov/libc.so.6

Reading symbols from /lib/ld-linux.so.2...done.

Loaded symbols for /lib/ld-linux.so.2

Core was generated by `./testc'.

######程式是由於段錯誤退出的

Program terminated with signal 11, Segmentation fault.

[New process 13072]

######段錯誤的地方在dummy_function - main.c的第5行

#0 0x080483a4 in dummy_function () at /home/kimi/testc/main.c:5

5 *ptr = 0x00;

######列印一下呼叫堆疊

(gdb) bt

#0 0x080483a4 in dummy_function () at /home/kimi/testc/main.c:5

#1 0x080483bc in main () at /home/kimi/testc/main.c:12

(gdb)

相關推薦

GCC如何產生core dump

先決條件 1.安裝apport(automatically generate crash reports for debugging) 2.修改/etc/security/limits.conf檔案,使允許core dump,或者用ulimit -c unlimited設定

造成segment fault,產生core dump的可能原因!

一 造成segment fault,產生core dump的可能原因1.記憶體訪問越界 a) 由於使用錯誤的下標,導致陣列訪問越界 b) 搜尋字串時,依靠字串結束符來判斷字串是否結束,但是字串沒有正常的使用結束符 c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp

造成segment fault,產生core dump的可能原因

1.記憶體訪問越界  a) 由於使用錯誤的下標,導致陣列訪問越界  b) 搜尋字串時,依靠字串結束符來判斷字串是否結束,但是字串沒有正常的使用結束符  c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字串操作函

Linux 下如何產生core檔案(core dump設定)

       今天在Linux下除錯C程式時,出現段錯誤,習慣性的ls下當前目錄,發現沒有生成core檔案。驚訝了一下,怎麼回事?以前都會產生的啊,難不成是程式的問題?後來同事提醒是不是系統沒有開啟生成core dump的設定。 還真是系統設定問題,我的ubuntu14.0

[skill][debug][gdb] 使用core dump 進行GDB

bsp mit kill nbsp ase pgrep -- org 發生 core dump 掃盲:https://wiki.archlinux.org/index.php/Core_dump 1. 人為制作 core dump   1.1 實時在線生成cor

linux core-dump生成

profile -c lin pattern 時間戳 use linux proc nbsp 1. echo "ulimit -c 1024" >> /etc/profile / ulimit -c unlimited 2.echo 1 > /proc/

Linux下如何生成core dump 文件(解決segment fault段錯誤的問題)

http alt 系統設置 images mit 只讀 功能 lin 設置 Linux下的C程序常常會因為內存訪問等原因造成segment fault(段錯誤),如果此時core dump 的功能是打開的,在運行我們的可執行程序時就會生成一個名為core的文件,然後我們就可

linux下調試core dump文件

post 文件夾 info nbsp div href mit pos tail 參考文章 0 core dump文件 當程序運行的過程中異常終止或崩潰,操作系統會將程序當時的內存狀態記錄下來,保存在一個文件中,這種行為就叫做Core Dump,成為核心轉儲. 除了內

【Z】段錯誤Segment Fault定位,即core dump文件與gdb定位

rect fun 發生 toolbar ulimit top wid title 沒有 使用C++開發系統有時會出現段錯誤,即Segment Fault。此類錯誤程序直接崩潰,通常沒有任何有用信息輸出,很難定位bug,因而無從解決問題。今天我們介紹core dump文件,

how to set the core dump file location(and name)?

1、如何長期開啟core dump功能?         編輯 /etc/profile,在末尾加上命令: ulimit -c unlimited >/dev/null 2>&1  &

core dump 配置

esp 最好 可執行程序 通過 調試方法 技術 segment 沒有 pattern 引用:http://www.cnblogs.com/secondtonone1/p/5732938.html Windows環境崩潰問題可根據vs調試工具查看,Linux同樣可以查

使用GDB除錯PHP Core Dump

注意到PHP崩潰了 沒有絕對的方法可以知道PHP崩潰,但可能有跡象。通常,如果您訪問始終應該生成輸出的頁面(例如,具有前導HTML塊),並且突然從瀏覽器中獲取“文件不包含資料”,則可能意味著PHP在執行時崩潰了某處。指令碼。告訴PHP崩潰的另一種方法是檢視Apache錯誤日誌,並查詢SEGV(A

Linux下core dump

在linux下開發時,如果程式突然崩潰了,也沒有任何日誌。這時可以檢視core。從core檔案中分析原因,通過gdb看出程式掛在哪裡,分析前後的變數,找出問題的原因。 core dump基本概念 當程式執行的過程中異常終止或崩潰,作業系統會將程式當時的記

【Linux】使用gdb快速定位core dump

前言 如果你沒有見過core dumped,說明你不是一個合格的Coder(但並不代表知道就是合格的Coder),在Linux作業系統下,通過gcc、g++編譯出的程式碼就有可能出現這樣的問題(windows下一般都是棧溢位),下面就具體的core dumped

g++報錯Core Dump.md

造成這個錯誤的原因可以能有以下幾點  1,記憶體訪問越界: (1) 陣列訪問越界,因為下標出超出了範圍。   (2) 搜尋字串的時候,通過字串的結尾符號來判斷結束,但是實際上沒有這個結束符。 (3)使用strcpy, strcat, sprintf, strcm

linux core dump 檔案 gdb分析【轉】

core dump又叫核心轉儲, 當程式執行過程中發生異常, 程式異常退出時, 由作業系統把程式當前的記憶體狀況儲存在一個core檔案中, 叫core dump. (linux中如果記憶體越界會收到SIGSEGV訊號,然後就會core dump) 在程式執行的過程中,有

Linux 下 core dump 的 gdb 除錯

一、前言     linux下開發時,有時候程式突然崩潰了,沒有任何日誌。     從core檔案中分析原因,通過gdb看出程式掛在哪裡,分析前後的變數,找出問題的原因。     core檔案都帶有程序名稱、程序ID、和時間,這又是怎麼做到的呢?接下來記錄core檔案的

gdb除錯core檔案快速定位core dump位置

core dump又叫核心轉儲, 當程式執行過程中發生異常, 程式異常退出時, 由操作系統把程式當前的記憶體狀況儲存在一個core檔案中, 叫core dump. (linux中如果記憶體越界會收到SIGSEGV訊號,然後就會core dump) 在程式執行的過程中,有的時

select的fd超過1024將會非常危險------FD_SET導致core dump

   關於linux select無須多說, 來看程式碼: #include<stdio.h> #include<

Finding core-dump file

In a new server, my program got ‘core dump’. But I haven’t found the core-dump file in the current directory as usual. First I checked the ‘ulimit’ c