GDB之coredump的學習

2021-07-10 14:49:37 字數 1456 閱讀 8358

在linux環境下執行程式的時候有的時候會出現一些問題,這個時候就可以使用gdb工具進行除錯,以下是公司實習期間學習gdb的一些總結。

1、gdb的簡介

gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。

一般來說,gdb主要完成以下四個方面的功能:

(1)啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。

(2)可讓被除錯的程式在你所指定的除錯的斷點處挺住。

(3)當程式被停住時,可以檢查此時你的程式中所發生的事。

(4)動態的改變你程式的執行環境。

2、gdb的常用命令

(1)bt,檢視棧呼叫資訊;bt full檢視詳細棧呼叫資訊。

(2)frame n ,跳轉到指定的棧n

(3)up/down,棧呼叫上/下移乙個函式呼叫

(4)print,列印命令,簡寫p

print var :列印變數的值

print &var ;列印變數的位址

(5)list ,簡寫l,列出原始碼資訊

(6)info args ,檢視函式引數資訊

(7)info locals ,檢視函式中區域性變數的資訊

(8)info register ,檢視cpu暫存器的資訊

3、coredump的介紹

通常情況下coredump包含了程式執行時的記憶體,暫存器狀態,堆疊指標,記憶體管理資訊等。可以理解為把程式工作的當前狀態儲存成乙個檔案(core檔案)。

設定core

檔案大小非

0,兩種方式

1. ulimit

–csize

2. 呼叫

setrlimit

()在**中設定

設定corepattern

echo /

nfs/

coredump

/core-%e-%p-%s-%t>   /

proc

/sys/kernel/

core_pattern

以下是引數列表:

%p-

pid%u - 當前uid

%g - 當前gid

%s -

導致產生

core

的訊號%t -core檔案生成時的unix時間

%h - 主機名

%e - 可執行檔名

4、如果系統中沒有安裝gdb或者不能生成coredump,可以通過在**中新增如下**產生coredump:

#include #include struct rlimit rlim;

rlim.rlim_cur =rlim_infinity;

rlim.rlim_max=rlim_infinity;

setrlimit(rlimit_core,&rlim);

高階gdb之core dump的除錯

basic perl等語言處理的可以說是user的資料,c可以說在那邊把資料在記憶體移來移去,組語可說把資料在暫存器搬來搬去,越低階的處理表示握有的資源越少 所以c處理不好的話很容易記憶體跨出範圍,或者系統毀了 panic 這時都會產生乙個core dump,就是毀掉的瞬間記憶體內部的內容會搬到乙個...

GDB除錯coredump檔案

linux上程式崩潰起來挺煩人,不過linux 比較好的是有gdb.echo ulimit c unlimited etc profile 然後記得敲入命令 source etc profile然後敲入命令 ulimit c效果如下 確認能否生成coredump檔案,使用如下命令 使用時注意,我在測...

gdb除錯coredump檔案

linux上程式崩潰起來挺煩人,不過linux 比較好的是有gdb.echo ulimit c unlimited etc profile 然後記得敲入命令 source etc profile然後敲入命令 ulimit c效果如下 確認能否生成coredump檔案,使用如下命令 使用時注意,我在測...