最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux下如何使用gdb調(diào)試core文件

 更新時(shí)間:2020年08月27日 10:40:51   作者:Dabelv  
這篇文章主要介紹了Linux下如何使用gdb調(diào)試core文件,幫助大家更好的理解和學(xué)習(xí)Linux,感興趣的朋友可以了解下

1.core文件

當(dāng)程序運(yùn)行過(guò)程中出現(xiàn)Segmentation fault (core dumped)錯(cuò)誤時(shí),程序停止運(yùn)行,并產(chǎn)生core文件。core文件是程序運(yùn)行狀態(tài)的內(nèi)存映象。使用gdb調(diào)試core文件,可以幫助我們快速定位程序出現(xiàn)段錯(cuò)誤的位置。當(dāng)然,可執(zhí)行程序編譯時(shí)應(yīng)加上-g編譯選項(xiàng),生成調(diào)試信息。

當(dāng)程序訪問(wèn)的內(nèi)存超出了系統(tǒng)給定的內(nèi)存空間,就會(huì)產(chǎn)生Segmentation fault (core dumped),因此,段錯(cuò)誤產(chǎn)生的情況主要有:

(1)訪問(wèn)不存在的內(nèi)存地址;
(2)訪問(wèn)系統(tǒng)保護(hù)的內(nèi)存地址;
(3)數(shù)組訪問(wèn)越界等。

core dumped又叫核心轉(zhuǎn)儲(chǔ), 當(dāng)程序運(yùn)行過(guò)程中發(fā)生異常, 程序異常退出時(shí), 由操作系統(tǒng)把程序當(dāng)前的內(nèi)存狀況存儲(chǔ)在一個(gè)core文件中, 叫core dumped。

core意指core memory,用線圈做的內(nèi)存。如今 ,半導(dǎo)體工業(yè)澎勃發(fā)展,已經(jīng)沒(méi)有人用 core memory 了,不過(guò),在許多情況下,人們還是把記憶體叫作 core 。

2.控制core文件是否生成

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

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

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

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

(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默認(rèn)的文件名稱是core.pid,pid指的是產(chǎn)生段錯(cuò)誤的程序的進(jìn)程號(hào)。
默認(rèn)路徑是產(chǎn)生段錯(cuò)誤的程序的當(dāng)前目錄。

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

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

以下是參數(shù)列表:

%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加當(dāng)前uid
%g - insert current gid into filename 添加當(dāng)前gid
%s - insert signal that caused the coredump into the filename 添加導(dǎo)致產(chǎn)生core的信號(hào)
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成時(shí)的unix時(shí)間
%h - insert hostname where the coredump happened into filename 添加主機(jī)名
%e - insert coredumping executable name into filename 添加命令名。

一般情況下,無(wú)需修改,按照默認(rèn)的方式即可。

4.gdb調(diào)試core文件的步驟

使用gdb調(diào)試core文件來(lái)查找程序中出現(xiàn)段錯(cuò)誤的位置時(shí),要注意的是可執(zhí)行程序在編譯的時(shí)候需要加上-g編譯命令選項(xiàng)。

gdb調(diào)試core文件的步驟常見(jiàn)的有如下幾種,推薦第一種。

具體步驟一:

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

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

用法示例:

可以定位到源程序中具體文件的具體位置,出現(xiàn)了段錯(cuò)誤。

具體步驟二:

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

(2)在進(jìn)入gdb后,指定core文件對(duì)應(yīng)的符號(hào)表,命令格式:file [exec file] .
用法示例:

具體步驟三:

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

5.其它查找段錯(cuò)誤位置的方法

可以使用gdb進(jìn)行單步調(diào)試,來(lái)查找段錯(cuò)誤出錯(cuò)的位置。gdb的用例具體見(jiàn):
Linux下gdb用法簡(jiǎn)單介紹。

以上就是Linux下如何使用gdb調(diào)試core文件的詳細(xì)內(nèi)容,更多關(guān)于Linux gdb調(diào)試core文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • CentOS7 Docker Nginx部署及運(yùn)行詳解

    CentOS7 Docker Nginx部署及運(yùn)行詳解

    這篇文章主要介紹了CentOS7 Docker Nginx部署及運(yùn)行詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 教你一招實(shí)現(xiàn)Linux中的文本比對(duì)

    教你一招實(shí)現(xiàn)Linux中的文本比對(duì)

    這篇文章主要給阿加介紹了關(guān)于Linux下文本比對(duì)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • haproxy+keepalived實(shí)現(xiàn)高可用負(fù)載均衡(理論篇)

    haproxy+keepalived實(shí)現(xiàn)高可用負(fù)載均衡(理論篇)

    軟件負(fù)載均衡一般通過(guò)兩種方式來(lái)實(shí)現(xiàn):基于操作系統(tǒng)的軟負(fù)載實(shí)現(xiàn)和基于第三方應(yīng)用的軟負(fù)載實(shí)現(xiàn)。LVS就是基于Linux操作系統(tǒng)實(shí)現(xiàn)的一種軟負(fù)載,HAProxy就是開(kāi)源的并且基于第三應(yīng)用實(shí)現(xiàn)的軟負(fù)載
    2013-01-01
  • Linux、CentOS下安裝zip與unzip指令功能(服務(wù)器)

    Linux、CentOS下安裝zip與unzip指令功能(服務(wù)器)

    這篇文章主要介紹了Linux、CentOS下安裝zip與unzip指令的操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-11-11
  • Ubuntu18.04通過(guò)源碼安裝Odoo14的教程

    Ubuntu18.04通過(guò)源碼安裝Odoo14的教程

    本系列文章針對(duì)Odoo 14版,從系統(tǒng)安裝,開(kāi)發(fā)環(huán)境配置,代碼結(jié)構(gòu),主要功能升級(jí),源碼賞析,Anodoo對(duì)Odoo的關(guān)鍵擴(kuò)展等角度,預(yù)先給大家介紹即將在2020年發(fā)布的這一最新版本
    2020-02-02
  • linux中批量添加文件前綴的操作方法

    linux中批量添加文件前綴的操作方法

    這篇文章主要介紹了linux中批量添加文件前綴的操作方法,給大家擴(kuò)展介紹linux下批量改變文件前綴命令,需要的朋友可以參考下
    2019-12-12
  • Linux?vim全局替換的實(shí)現(xiàn)方法

    Linux?vim全局替換的實(shí)現(xiàn)方法

    這篇文章主要介紹了Linux?vim全局替換的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 基于Linux中vnc配置端口號(hào)的修改方法

    基于Linux中vnc配置端口號(hào)的修改方法

    今天小編就為大家分享一篇基于Linux中vnc配置端口號(hào)的修改方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 分享十個(gè)便宜VPS主機(jī)-VPS服務(wù)器建站和搭建應(yīng)用服務(wù)體驗(yàn)

    分享十個(gè)便宜VPS主機(jī)-VPS服務(wù)器建站和搭建應(yīng)用服務(wù)體驗(yàn)

    這篇文章主要介紹了分享十個(gè)便宜VPS主機(jī)-VPS服務(wù)器建站和搭建應(yīng)用服務(wù)體驗(yàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-07-07
  • Linux系統(tǒng)使用Fuser命令的方法

    Linux系統(tǒng)使用Fuser命令的方法

    fuser命令是一個(gè)非常聰明的unix實(shí)用程序,用于查找正在使用某個(gè)文件、目錄或socket的進(jìn)程。這篇文章主要介紹了Linux系統(tǒng)使用Fuser命令的方法,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

宜君县| 封开县| 巴彦淖尔市| 嘉黎县| 雅安市| 丰宁| 织金县| 淮南市| 读书| 光山县| 米林县| 桐城市| 文登市| 治县。| 洞口县| 于都县| 驻马店市| 天津市| 襄城县| 江油市| 商水县| 南雄市| 余江县| 延寿县| 温泉县| 新河县| 华宁县| 黄梅县| 青州市| 牡丹江市| 三台县| 安阳市| 土默特左旗| 孙吴县| 房产| 博爱县| 堆龙德庆县| 类乌齐县| 柘荣县| 博野县| 修水县|