日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
在Linux上怎么得到一個(gè)段錯(cuò)誤的核心轉(zhuǎn)儲(chǔ)
在Linux上,當(dāng)程序運(yùn)行過程中發(fā)生段錯(cuò)誤時(shí),可以通過以下步驟來獲得一個(gè)核心轉(zhuǎn)儲(chǔ): ,,1. 運(yùn)行valgrind命令。,2. 設(shè)置核心轉(zhuǎn)儲(chǔ)的最大尺寸。,3. 設(shè)置核心轉(zhuǎn)儲(chǔ)的保存路徑。

在Linux上怎么得到一個(gè)段錯(cuò)誤的核心轉(zhuǎn)儲(chǔ)

成都創(chuàng)新互聯(lián)公司總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、微信小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷領(lǐng)域創(chuàng)造價(jià)值而不懈努力!

段錯(cuò)誤(Segmentation fault)是指程序試圖訪問一個(gè)它無權(quán)訪問的內(nèi)存區(qū)域,通常是由于程序中的指針錯(cuò)誤或者數(shù)組越界等原因?qū)е碌?,?dāng)程序發(fā)生段錯(cuò)誤時(shí),操作系統(tǒng)會(huì)生成一個(gè)核心轉(zhuǎn)儲(chǔ)文件(core dump),以便開發(fā)人員分析問題原因,本文將介紹如何在Linux系統(tǒng)上獲取段錯(cuò)誤的核心轉(zhuǎn)儲(chǔ)文件。

生成核心轉(zhuǎn)儲(chǔ)文件

1、設(shè)置核心轉(zhuǎn)儲(chǔ)文件大小限制

要生成核心轉(zhuǎn)儲(chǔ)文件,首先需要設(shè)置系統(tǒng)的內(nèi)存大小限制,可以通過修改/proc/sys/kernel/core_pattern文件來實(shí)現(xiàn),將核心轉(zhuǎn)儲(chǔ)文件的大小限制設(shè)置為256MB:

echo "/tmp/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern
echo 256 > /proc/sys/kernel/core_pattern_size

這里,%e表示可執(zhí)行文件名,%s表示進(jìn)程ID,%u表示用戶ID,%g表示組ID,%p表示進(jìn)程的PID,%t表示時(shí)間戳,這些占位符將在生成的核心轉(zhuǎn)儲(chǔ)文件名中被實(shí)際值替換。

2、設(shè)置核心轉(zhuǎn)儲(chǔ)文件的生成條件

除了設(shè)置核心轉(zhuǎn)儲(chǔ)文件的大小限制外,還可以設(shè)置生成核心轉(zhuǎn)儲(chǔ)文件的條件,只在進(jìn)程接收到SIGSEGV信號(hào)時(shí)生成核心轉(zhuǎn)儲(chǔ)文件:

echo "/tmp/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern
echo "%p %s" > /proc/sys/kernel/core_pattern_extra
echo 1 > /proc/sys/kernel/core_pattern_filter

這里,%p表示進(jìn)程的PID,%s表示信號(hào)名稱。%p %s表示只有當(dāng)進(jìn)程接收到SIGSEGV信號(hào)時(shí)才會(huì)生成核心轉(zhuǎn)儲(chǔ)文件,其他可用的信號(hào)有SIGABRT、SIGFPE等。

3、確保系統(tǒng)允許生成核心轉(zhuǎn)儲(chǔ)文件

要確保系統(tǒng)允許生成核心轉(zhuǎn)儲(chǔ)文件,需要使用root權(quán)限運(yùn)行上述命令:

sudo su
echo "/tmp/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern
echo "%p %s" > /proc/sys/kernel/core_pattern_extra
echo 1 > /proc/sys/kernel/core_pattern_filter

分析核心轉(zhuǎn)儲(chǔ)文件

1、使用gdb工具分析核心轉(zhuǎn)儲(chǔ)文件

要分析核心轉(zhuǎn)儲(chǔ)文件,可以使用GNU Debugger(gdb)工具,首先安裝gdb:

sudo apt-get install gdb

然后使用以下命令啟動(dòng)gdb并加載核心轉(zhuǎn)儲(chǔ)文件:

gdb  

是可執(zhí)行文件的路徑,是核心轉(zhuǎn)儲(chǔ)文件的路徑,在gdb中,可以使用各種命令來查看和分析程序的狀態(tài),

bt:查看當(dāng)前函數(shù)調(diào)用棧;

info registers:查看寄存器的值;

list *0x12345678:查看地址為0x12345678的內(nèi)存內(nèi)容;

print variable_name:打印名為variable_name的變量的值;

quit:退出gdb。

2、使用Valgrind工具分析程序內(nèi)存錯(cuò)誤

Valgrind是一個(gè)用于內(nèi)存管理和線程錯(cuò)誤檢測的工具集,它可以自動(dòng)檢測程序中的內(nèi)存錯(cuò)誤,并生成詳細(xì)的報(bào)告,要使用Valgrind分析程序,首先安裝Valgrind:

sudo apt-get install valgrind

然后使用以下命令運(yùn)行Valgrind:

valgrind --leak-check=full --show-leak-kinds=all  

是可執(zhí)行文件的路徑,是傳遞給程序的參數(shù),Valgrind會(huì)在后臺(tái)運(yùn)行程序,并在程序結(jié)束時(shí)輸出內(nèi)存錯(cuò)誤報(bào)告,通過閱讀報(bào)告,可以找到導(dǎo)致段錯(cuò)誤的原因。


網(wǎng)頁題目:在Linux上怎么得到一個(gè)段錯(cuò)誤的核心轉(zhuǎn)儲(chǔ)
標(biāo)題鏈接:http://www.dlmjj.cn/article/djicipd.html