91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Linux系統中如何使用gdb進行調試core文件

發布時間:2020-11-06 17:10:31 來源:億速云 閱讀:684 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關在Linux系統中如何使用gdb進行調試core文件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1.core文件

當程序運行過程中出現Segmentation fault (core dumped)錯誤時,程序停止運行,并產生core文件。core文件是程序運行狀態的內存映象。使用gdb調試core文件,可以幫助我們快速定位程序出現段錯誤的位置。當然,可執行程序編譯時應加上-g編譯選項,生成調試信息。

當程序訪問的內存超出了系統給定的內存空間,就會產生Segmentation fault (core dumped),因此,段錯誤產生的情況主要有:

(1)訪問不存在的內存地址;
(2)訪問系統保護的內存地址;
(3)數組訪問越界等。

core dumped又叫核心轉儲, 當程序運行過程中發生異常, 程序異常退出時, 由操作系統把程序當前的內存狀況存儲在一個core文件中, 叫core dumped。

core意指core memory,用線圈做的內存。如今 ,半導體工業澎勃發展,已經沒有人用 core memory 了,不過,在許多情況下,人們還是把記憶體叫作 core 。

2.控制core文件是否生成

(1)使用ulimit -c命令可查看core文件的生成開關。若結果為0,則表示關閉了此功能,不會生成core文件。

(2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的單位為KB)。如果生成的信息超過此大小,將會被裁剪,最終生成一個不完整的core文件。在調試此core文 件的時候,gdb會提示錯誤。比如:ulimit -c 1024。

(3)使用ulimit -c unlimited,則表示core文件的大小不受限制。

在終端通過命令ulimit -c unlimited只是臨時修改,重啟后無效 ,要想永久修改有三種方式:

(1)在/etc/rc.local 中增加一行 ulimit -c unlimited

(2)在/etc/profile 中增加一行 ulimit -c unlimited

(3)在/etc/security/limits.conf最后增加如下兩行記錄:

@root soft core unlimited
@root hard core unlimited

3.core文件的名稱和生成路徑

core默認的文件名稱是core.pid,pid指的是產生段錯誤的程序的進程號。
默認路徑是產生段錯誤的程序的當前目錄。

如果想修改core文件的名稱和生成路徑,相關的配置文件為:
/proc/sys/kernel/core_uses_pid:控制產生的core文件的文件名中是否添加pid作為擴展,如果添加則文件內容為1,否則為0。

/proc/sys/kernel/core_pattern:可以設置格式化的core文件保存的位置和文件名,比如原來文件內容是core-%e。
可以這樣修改:
echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
將會控制所產生的core文件會存放到/corefile目錄下,產生的文件名為:core-命令名-pid-時間戳。

以下是參數列表:

%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加當前uid
%g - insert current gid into filename 添加當前gid
%s - insert signal that caused the coredump into the filename 添加導致產生core的信號
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成時的unix時間
%h - insert hostname where the coredump happened into filename 添加主機名
%e - insert coredumping executable name into filename 添加命令名。

一般情況下,無需修改,按照默認的方式即可。

4.gdb調試core文件的步驟

使用gdb調試core文件來查找程序中出現段錯誤的位置時,要注意的是可執行程序在編譯的時候需要加上-g編譯命令選項。

gdb調試core文件的步驟常見的有如下幾種,推薦第一種。

具體步驟一:

(1)啟動gdb,進入core文件,命令格式:gdb [exec file] [core file]。
用法示例:gdb ./test test.core。

(2)在進入gdb后,查找段錯誤位置:where或者bt

用法示例:

在Linux系統中如何使用gdb進行調試core文件

可以定位到源程序中具體文件的具體位置,出現了段錯誤。

具體步驟二:

(1)啟動gdb,進入core文件,命令格式:gdb –core=[core file]。
用法示例:gdb –core=test.core。

(2)在進入gdb后,指定core文件對應的符號表,命令格式:file [exec file] .
用法示例: 在Linux系統中如何使用gdb進行調試core文件

具體步驟三:

(1)啟動gdb,進入core文件,命令格式:gdb -c [core file]。
用法示例:gdb -core test.core。
(2)其它步驟同步驟二。

關于在Linux系統中如何使用gdb進行調試core文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯门区| 尉犁县| 三原县| 莆田市| 昌乐县| 常宁市| 松江区| 扶余县| 太原市| 长寿区| 云和县| 罗甸县| 怀远县| 辰溪县| 昌黎县| 龙游县| 巫溪县| 原平市| 固镇县| 溧阳市| 许昌市| 宁南县| 区。| 洛川县| 乌什县| 石泉县| 崇信县| 土默特右旗| 莲花县| 平湖市| 介休市| 永靖县| 宜君县| 上饶市| 望奎县| 肃南| 彩票| 海原县| 乌兰浩特市| 垣曲县| 平泉县|