青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

GLORY | 學(xué)習(xí)·記錄

coding for life

UVA 457 | 什么是Core Dump?

UVA457是個水題,但是我還是碰到了一些小問題。

1.開了一個state[50][42]數(shù)組在main函數(shù)里面,結(jié)果提交之后發(fā)現(xiàn)runtime error,覺著是堆棧溢出了。突然想起來50*42>2000,這種數(shù)組一定是開在main外面的,不然必然堆棧溢出。
2.是讀題不仔細(xì),當(dāng)成了多重輸入,搞了一個while(scanf(...)),結(jié)果超時了。第一次在UVA OJ上面超時。

但是這篇文章重點(diǎn)不是講這個,而是講我在運(yùn)行過程中經(jīng)常遇到的core dumped現(xiàn)象。我在網(wǎng)上找到一點(diǎn)資料,貼在下面:

原帖:http://blogold.chinaunix.net/u3/98822/showart_2093542.html


什么是Core Dump?
Core的意思是內(nèi)存, Dump的意思是扔出來, 堆出來.
開發(fā)和使用Unix程序時, 有時程序莫名其妙的down了, 卻沒有任何的提示(有時候會提示core dumped). 這時候可以查看一下有沒有形如core.進(jìn)程號的文件生成, 這個文件便是操作系統(tǒng)把程序down掉時的內(nèi)存內(nèi)容扔出來生成的, 它可以做為調(diào)試程序的參考.
core dump又叫核心轉(zhuǎn)儲, 當(dāng)程序運(yùn)行過程中發(fā)生異常, 程序異常退出時, 由操作系統(tǒng)把程序當(dāng)前的內(nèi)存狀況存儲在一個core文件中, 叫core dump.

如何使用core文件?
gdb -c core文件路徑 [應(yīng)用程序的路徑]
進(jìn)去后輸入where回車, 就可以顯示程序在哪一行當(dāng)?shù)舻? 在哪個函數(shù)中.

為什么沒有core文件生成呢?
有時候程序down了, 但是core文件卻沒有生成. core文件的生成跟你當(dāng)前系統(tǒng)的環(huán)境設(shè)置有關(guān)系, 可以用下面的語句設(shè)置一下, 然后再運(yùn)行程序便成生成core文件.
ulimit -c unlimited
沒有找到core文件,我們改改ulimit的設(shè)置,讓它產(chǎn)生。1024是隨便取的,要是core文件大于1024個塊,就產(chǎn)生不出來了。)
$ ulimit -c 1024 (轉(zhuǎn)者注: 使用-c unlimited不限制core文件大小

core文件生成的位置一般于運(yùn)行程序的路徑相同, 文件名一般為core.進(jìn)程號

4. 用gdb查看core文件:
下面我們可以在發(fā)生運(yùn)行時信號引起的錯誤時發(fā)生core dump了.
發(fā)生core dump之后, 用gdb進(jìn)行查看core文件的內(nèi)容, 以定位文件中引發(fā)core dump的行.
gdb [exec file] [core file]
如:
gdb ./test test.core
在進(jìn)入gdb后, 用bt命令查看backtrace以檢查發(fā)生程序運(yùn)行到哪里, 來定位core dump的文件->行.

===========================================================================

造成程序core dump的原因很多,這里根據(jù)以往的經(jīng)驗(yàn)總結(jié)一下:

1 內(nèi)存訪問越界

  a) 由于使用錯誤的下標(biāo),導(dǎo)致數(shù)組訪問越界

  b) 搜索字符串時,依靠字符串結(jié)束符來判斷字符串是否結(jié)束,但是字符串沒有正常的使用結(jié)束符

  c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函數(shù),將目標(biāo)字符串讀/寫爆。應(yīng)該使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函數(shù)防止讀寫越界。

2 多線程程序使用了線程不安全的函數(shù)。

應(yīng)該使用下面這些可重入的函數(shù),尤其注意紅色標(biāo)示出來的函數(shù),它們很容易被用錯:

asctime_r(3c) gethostbyname_r(3n) getservbyname_r(3n) ctermid_r(3s) gethostent_r(3n) getservbyport_r(3n) ctime_r(3c) getlogin_r(3c) getservent_r(3n) fgetgrent_r(3c) getnetbyaddr_r(3n) getspent_r(3c) fgetpwent_r(3c) getnetbyname_r(3n) getspnam_r(3c) fgetspent_r(3c) getnetent_r(3n) gmtime_r(3c) gamma_r(3m) getnetgrent_r(3n) lgamma_r(3m) getauclassent_r(3) getprotobyname_r(3n) localtime_r(3c) getauclassnam_r(3) etprotobynumber_r(3n) nis_sperror_r(3n) getauevent_r(3) getprotoent_r(3n) rand_r(3c) getauevnam_r(3) getpwent_r(3c) readdir_r(3c) getauevnum_r(3) getpwnam_r(3c) strtok_r(3c) getgrent_r(3c) getpwuid_r(3c) tmpnam_r(3s) getgrgid_r(3c) getrpcbyname_r(3n) ttyname_r(3c) getgrnam_r(3c) getrpcbynumber_r(3n) gethostbyaddr_r(3n) getrpcent_r(3n)

3 多線程讀寫的數(shù)據(jù)未加鎖保護(hù)。

對于會被多個線程同時訪問的全局?jǐn)?shù)據(jù),應(yīng)該注意加鎖保護(hù),否則很容易造成core dump

4 非法指針

  a) 使用空指針

  b) 隨意使用指針轉(zhuǎn)換。一個指向一段內(nèi)存的指針,除非確定這段內(nèi)存原先就分配為某種結(jié)構(gòu)或類型,或者這種結(jié)構(gòu)或類型的數(shù)組,否則不要將它轉(zhuǎn)換為這種結(jié)構(gòu)或類型的指針,而應(yīng)該將這段內(nèi)存拷貝到一個這種結(jié)構(gòu)或類型中,再訪問這個結(jié)構(gòu)或類型。這是因?yàn)槿绻@段內(nèi)存的開始地址不是按照這種結(jié)構(gòu)或類型對齊的,那么訪問它時就很容易因?yàn)閎us error而core dump.

5 堆棧溢出

不要使用大的局部變量(因?yàn)榫植孔兞慷挤峙湓跅I希@樣容易造成堆棧溢出,破壞系統(tǒng)的棧和堆結(jié)構(gòu),導(dǎo)致出現(xiàn)莫名其妙的錯誤。

-------
我自己程序core dumped就是因?yàn)榈?個原因,堆棧溢出。我的局部數(shù)組開的過大,而局部變量分配在棧上,導(dǎo)致堆棧溢出。

posted on 2011-03-14 08:24 meglory 閱讀(568) 評論(0)  編輯 收藏 引用 所屬分類: AlgorithmsLinux

導(dǎo)航

隨筆分類

隨筆檔案

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            黄色精品一区| 玖玖综合伊人| 久久嫩草精品久久久精品| 制服丝袜激情欧洲亚洲| 午夜久久tv| 亚洲一区欧美一区| 欧美精品一区三区在线观看| 久久久久久穴| 国产精品素人视频| 一区二区黄色| 99精品福利视频| 久热精品视频| 麻豆精品网站| 好看的日韩视频| 性欧美8khd高清极品| 亚洲男女自偷自拍图片另类| 欧美日韩一卡| 亚洲激情网站| 亚洲激情图片小说视频| 久久久久一本一区二区青青蜜月| 午夜精品一区二区在线观看| 国产精品成人观看视频国产奇米| 亚洲国产美女| 99精品欧美一区| 欧美日韩一区二区视频在线| 亚洲片在线观看| 99天天综合性| 欧美日韩久久久久久| 99国产精品| 亚洲欧美另类中文字幕| 国产精品久久福利| 亚洲欧美日韩国产| 久久精品在线| 在线播放不卡| 欧美 日韩 国产精品免费观看| 欧美黄色aa电影| 夜夜嗨av一区二区三区| 欧美性久久久| 午夜视频在线观看一区二区| 久久精品国产第一区二区三区| 国产欧美日韩一区二区三区在线观看 | 欧美一区二区性| 欧美午夜欧美| 一本色道久久88精品综合| 亚洲精品在线看| 免费不卡在线观看av| 亚洲国产精品va在线看黑人 | 国产一级久久| 性欧美长视频| 久久精品成人欧美大片古装| 国产精品伦理| 亚洲一区在线播放| 欧美亚洲在线观看| 国产精品自拍一区| 欧美亚洲视频一区二区| 久久激情视频| 国语自产精品视频在线看8查询8| 欧美一区日韩一区| 午夜亚洲福利| 国产精品久久一区主播| 久久精品人人做人人爽| 久久综合给合久久狠狠色 | 亚洲日韩欧美视频一区| 另类春色校园亚洲| 亚洲激情电影在线| 亚洲图片自拍偷拍| 欧美日韩亚洲一区二区三区四区| 亚洲欧美日韩中文在线制服| 久久精品免费电影| 亚洲国产你懂的| 欧美日韩美女在线| 亚洲欧美国产高清| 免费不卡在线观看av| 亚洲国产一区二区在线| 欧美日韩一区二区在线播放| 亚洲一区二三| 美女主播精品视频一二三四| 日韩午夜在线播放| 国产精品一区久久| 久久久水蜜桃| 日韩五码在线| 久久久精品国产一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 欧美va亚洲va日韩∨a综合色| 一区二区三区精品视频在线观看| 午夜精品久久久久久久99水蜜桃| 精品51国产黑色丝袜高跟鞋| 欧美精品免费看| 欧美一区二区三区视频在线 | 久久先锋资源| 亚洲激情视频在线播放| 国产日韩一区| 欧美日韩国产精品成人| 欧美有码在线观看视频| 亚洲精品欧美| 久久成人精品视频| 在线视频中文亚洲| 在线观看欧美成人| 欧美亚日韩国产aⅴ精品中极品| 久久精品欧美| 亚洲一区一卡| 91久久久久久| 久久综合伊人77777麻豆| 亚洲午夜伦理| 亚洲激情婷婷| 精久久久久久| 国产毛片精品视频| 欧美日韩国产一区精品一区| 久久久精品动漫| 亚洲女ⅴideoshd黑人| 日韩亚洲成人av在线| 亚洲第一精品影视| 欧美 日韩 国产在线| 久久成人免费视频| 亚洲综合视频1区| 夜夜嗨一区二区三区| 悠悠资源网亚洲青| 国内精品国产成人| 国产一区二区丝袜高跟鞋图片| 欧美三级乱码| 欧美日韩999| 欧美精品播放| 欧美电影在线| 欧美大片在线观看一区| 老司机成人在线视频| 久久久久九九视频| 久久岛国电影| 久久国产精品亚洲va麻豆| 欧美亚洲免费电影| 午夜视频精品| 欧美在线视频导航| 亚洲欧美一区二区三区极速播放| 亚洲无线视频| 亚洲午夜久久久| 欧美一区网站| 欧美综合国产| 久久久水蜜桃| 欧美福利专区| 欧美日韩大片| 国产精品毛片a∨一区二区三区|国 | 欧美激情国产日韩精品一区18| 免费久久99精品国产| 欧美激情一区二区三区高清视频| 模特精品在线| 欧美日韩成人激情| 国产精品久久久久久久7电影| 国产精品嫩草99av在线| 国产视频一区在线| 在线免费观看日韩欧美| 亚洲日韩第九十九页| 91久久在线播放| 一本久久综合| 性久久久久久久久| 久久久久.com| 欧美激情第六页| 亚洲另类一区二区| 亚洲曰本av电影| 久久久免费精品视频| 欧美日韩另类一区| 国产伦精品一区二区三区视频黑人 | 久久在线免费观看| 欧美激情aⅴ一区二区三区 | 久久精品亚洲乱码伦伦中文 | 久久久久久国产精品一区| 蜜臀99久久精品久久久久久软件| 欧美国产成人在线| 国产精品久久久久久久久婷婷| 国产一区二区成人| 亚洲精品一区二区三区在线观看 | 影音先锋欧美精品| av成人老司机| 玖玖在线精品| 一区二区三区视频在线播放| 久久精品视频一| 欧美午夜女人视频在线| 国内精品久久久久影院薰衣草| 在线观看欧美黄色| 亚洲欧美一区二区原创| 美国十次成人| 亚洲图片欧洲图片av| 欧美va天堂在线| 伊人久久噜噜噜躁狠狠躁| 亚洲在线一区二区| 欧美成人第一页| 亚洲欧美综合另类中字| 欧美日韩免费高清一区色橹橹| 狠狠色综合网站久久久久久久| 亚洲午夜激情网页| 亚洲福利视频网| 久久免费视频观看| 国产精品视屏| 香蕉av777xxx色综合一区| 亚洲精品欧美日韩专区| 久久免费视频观看| 国产亚洲一区精品| 亚洲欧美国产77777| 亚洲精品一区二| 欧美承认网站| 91久久精品国产| 蜜桃伊人久久|