一
.生成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 將其中的...