Linux下利用core dump檔案除錯

2021-08-04 20:15:21 字數 1334 閱讀 7436

.生成coredump檔案

coredump

又叫核心轉儲

,當程式執行過程中

異常退出時,

由作業系統把程式當前的記憶體狀況儲存在乙個

core

檔案中,

叫coredump.

為了生成

coredump

檔案,需要對環境做如下設定:

1.ulimit -c unli

mited

此命令會取消對轉儲檔案大小的限制,因為系統通常會預設不儲存

coredump

檔案,也即使用

ulimit-c

檢視的結果為0.

需要注意的是,上述命令ulimit-c unlimited是臨時的,此時開啟另乙個shell檢視ulimit-c時,結果仍然是0.若想設定永久生效,需要把ulimit-cunlimited新增到/etc/profile中儲存退出,重啟shell即可。也可以將其新增到~/.bashrc(只對當前使用者有效)或者/etc/bash.bashrc(所有使用者有效).

2.echo「core_%e_%p」 > /proc/sys/kernel/core_pattern

此命令定義了轉儲檔案的命名規則.

%e:可執行檔案的名稱

%p:程序id號

下面做乙個小測試:編寫如下程式

test.c:

#includevoid fun(int *p)

int main()

編譯程式

gcc-o test test.c得到可執行檔案

test.

執行程式

./test

會出現如下段錯誤:

segmentation fault (core dumped)

此時在當前目錄會生成了乙個名為

core_test_16784的檔案,此檔案即為

coredump檔案.

二.gdb除錯

coredump檔案

執行命令

可以發現,在函式

fun中出現了段錯誤.

假如編譯

test時加上

-g選項:

gcc -g-o test test.c

則還可以定位到出錯的行數:

參考:

Linux 下利用rtcwake喚醒裝置

以下是在opensuse上所做的測試 whereis rtcwake rtcwake usr sbin rtcwake usr share man man8 rtcwake.8.gz rtcwake help usage rtcwake options options d,device select...

linux下利用iptables配置路由器

這個任務其實是前段時間 網路安全 課程的乙個小實驗。實驗的要求是在virtualbox中執行兩台虛擬機器,一台linux機器用作路由器 該機器配置兩個網絡卡,乙個連線到外網,乙個連線到內網 一台windows機器連線到內網,通過linux的路由器功能上網。首先配置下實驗環境。實驗中真機為win7系統...

linux 下利用 crontab 備份mysql

vi mysql bak dbbackup.sh 目錄自定義 在指令碼中編輯 mysqldump uusername ppassword default character set utf8 dbname gzip mysql bak bak date y m d h m s sql.gz 將其中的...