真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

記一次core文件調(diào)試

無(wú)論是linux系統(tǒng),還是windows系統(tǒng),我們都有可能因?yàn)楦鞣N原因?qū)е鲁绦虮罎ⅲ敲催@種情況下如何確認(rèn)崩潰在哪了呢?

成都創(chuàng)新互聯(lián)公司專(zhuān)注于巴馬網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供巴馬營(yíng)銷(xiāo)型網(wǎng)站建設(shè),巴馬網(wǎng)站制作、巴馬網(wǎng)頁(yè)設(shè)計(jì)、巴馬網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)公司服務(wù),打造巴馬網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供巴馬網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

windows系統(tǒng)

這里是采用windows的api來(lái)產(chǎn)生dump文件

產(chǎn)生minidump的方法,網(wǎng)上都有,可以搜一下。

#include "DumpManager.h"

void main()
{
    DumpManager dump_manager(true);
    char* p = NULL;
    memcpy(p, "Hello", strlen("Hello"));
}

注:這里的DumpManager.h是崩潰后生成dump的文件

崩潰后的樣子,可能不同的人寫(xiě)出來(lái)的形式不一樣,或者彈出小窗,或者直接打印,或者發(fā)送監(jiān)控消息給客戶(hù)端,看自己實(shí)現(xiàn)吧!這里我采用直接打印:
記一次core 文件調(diào)試

調(diào)試開(kāi)始前的準(zhǔn)備:
記一次core 文件調(diào)試
這里的優(yōu)化一定要關(guān)掉,否則會(huì)導(dǎo)致dunp文件里面的調(diào)試信息和代碼對(duì)不上。

記一次core 文件調(diào)試
如果程序有可能產(chǎn)生windows底層的異常,這里也一定要切換

記一次core 文件調(diào)試
因?yàn)閐ump文件要和pdb一起使用,所以這里一定要生成pdb文件,否則一切白搭。

開(kāi)始調(diào)試:
程序崩潰后,程序運(yùn)行目錄下面會(huì)生成dump文件,這個(gè)文件名由自己生成dump的函數(shù)決定。
記一次core 文件調(diào)試
這個(gè)時(shí)候,只需要用VS直接打開(kāi)dump文件,就會(huì)進(jìn)入到VS的調(diào)試界面
記一次core 文件調(diào)試
對(duì)著畫(huà)線(xiàn)的部分,右鍵然后進(jìn)入調(diào)試狀態(tài),這里兩個(gè)選項(xiàng)可以隨便選:
記一次core 文件調(diào)試
注意:如果這里出現(xiàn)一些識(shí)別不了的dll函數(shù),就需要將對(duì)應(yīng)的dll以及pdb拷貝過(guò)來(lái),如果dll是操作系統(tǒng)里面的,只需要從微軟的服務(wù)器下載就可以了。
這里彈出的框里面會(huì)提示異常的信息,指針指向的地方就是崩潰的位置。然后就和本地的程序調(diào)試一樣,看各個(gè)值就可以了,這里不再贅述了。

Linux系統(tǒng)
調(diào)試開(kāi)始前要準(zhǔn)備的工作:開(kāi)啟生成核心文件(一次執(zhí)行只對(duì)一個(gè)終端窗口有效,所以一旦終端關(guān)閉,就需要重新執(zhí)行)
命令如下:
ulimit -c unlimited 這里是不限制core文件的大小,也可以限制core文件的大小,這個(gè)自行搜索吧!

代碼如下:

 #include 
#include 

void main()
{
   int i = 0;
   char* pTmp = NULL;
   printf("%d\n", *pTmp);
   return;
}

編譯,執(zhí)行:
記一次core 文件調(diào)試
這里據(jù)說(shuō)編譯的時(shí)候必須加上-g 選項(xiàng),否則用gdb調(diào)試的時(shí)候就會(huì)定位不到源代碼,只能定位到二進(jìn)制的地址。

運(yùn)行程序以后,會(huì)在程序運(yùn)行目錄下生成一個(gè)core文件:
記一次core 文件調(diào)試

調(diào)試開(kāi)始:
記一次core 文件調(diào)試
輸入gdb 程序名 core文件名 就可以調(diào)試了,這里輸出了一堆的信息,太多不想看?繼續(xù)輸入bt試試:
記一次core 文件調(diào)試
就這樣可以定位到問(wèn)題了。

通過(guò)對(duì)比還是可以發(fā)現(xiàn)linux下調(diào)試還是要比windows好用,不同的操作系統(tǒng)。dll都不一樣,然后我們就必須拷dll到我們的輸出目錄下,很麻煩。就這樣了,over。


名稱(chēng)欄目:記一次core文件調(diào)試
鏈接URL:http://weahome.cn/article/gsesdi.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部