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

GLORY | 學習·記錄

coding for life

UVA 457 | 什么是Core Dump?

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

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

但是這篇文章重點不是講這個,而是講我在運行過程中經常遇到的core dumped現象。我在網上找到一點資料,貼在下面:

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


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

如何使用core文件?
gdb -c core文件路徑 [應用程序的路徑]
進去后輸入where回車, 就可以顯示程序在哪一行當掉的, 在哪個函數中.

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

core文件生成的位置一般于運行程序的路徑相同, 文件名一般為core.進程號

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

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

造成程序core dump的原因很多,這里根據以往的經驗總結一下:

1 內存訪問越界

  a) 由于使用錯誤的下標,導致數組訪問越界

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

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

2 多線程程序使用了線程不安全的函數。

應該使用下面這些可重入的函數,尤其注意紅色標示出來的函數,它們很容易被用錯:

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 多線程讀寫的數據未加鎖保護。

對于會被多個線程同時訪問的全局數據,應該注意加鎖保護,否則很容易造成core dump

4 非法指針

  a) 使用空指針

  b) 隨意使用指針轉換。一個指向一段內存的指針,除非確定這段內存原先就分配為某種結構或類型,或者這種結構或類型的數組,否則不要將它轉換為這種結構或類型的指針,而應該將這段內存拷貝到一個這種結構或類型中,再訪問這個結構或類型。這是因為如果這段內存的開始地址不是按照這種結構或類型對齊的,那么訪問它時就很容易因為bus error而core dump.

5 堆棧溢出

不要使用大的局部變量(因為局部變量都分配在棧上),這樣容易造成堆棧溢出,破壞系統的棧和堆結構,導致出現莫名其妙的錯誤。

-------
我自己程序core dumped就是因為第5個原因,堆棧溢出。我的局部數組開的過大,而局部變量分配在棧上,導致堆棧溢出。

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

導航

隨筆分類

隨筆檔案

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久久国产一区二区| 亚洲精品久久久久久一区二区| 日韩视频在线一区二区| 欧美日韩免费观看一区三区| 一本大道久久a久久精二百| 亚洲剧情一区二区| 国产精品vip| 久久久夜夜夜| 免费中文字幕日韩欧美| 一本在线高清不卡dvd| 亚洲午夜未删减在线观看| 国产日韩在线视频| 欧美成人综合网站| 欧美日韩一区在线播放| 欧美在线啊v| 欧美不卡三区| 欧美一区二区免费| 免费看成人av| 亚洲欧美一区二区三区极速播放 | 亚洲男人天堂2024| 亚洲高清自拍| 亚洲午夜久久久| 亚洲国产精品黑人久久久| 免费一级欧美片在线观看| 久久精品人人做人人爽电影蜜月| …久久精品99久久香蕉国产| 亚洲精选大片| 激情欧美丁香| 亚洲小视频在线| 亚洲国产一区二区视频| 亚洲欧美日韩综合国产aⅴ| 亚洲激情视频在线观看| 亚洲永久免费观看| 亚洲最新合集| 老色批av在线精品| 久久精品视频亚洲| 国产精品久久久对白| 欧美成人一区二区三区在线观看| 国产精品福利久久久| 欧美激情中文字幕乱码免费| 国产色产综合色产在线视频| 一本色道久久88亚洲综合88| 在线观看日韩专区| 欧美亚洲在线| 午夜久久久久久| 欧美网站在线| 亚洲精品一区在线观看| 亚洲国产综合在线| 久久精品视频在线| 久久激情中文| 国产偷国产偷精品高清尤物| 亚洲一区二区三区高清| 中文久久乱码一区二区| 欧美国产精品日韩| 欧美国产一区二区在线观看| 韩日欧美一区| 久久精品视频在线看| 久久亚洲国产精品日日av夜夜| 国产精品一级二级三级| 亚洲欧美日韩在线综合| 欧美一区二区三区免费看 | 99成人精品| 亚洲天堂av电影| 欧美视频在线观看免费网址| 99精品国产一区二区青青牛奶| 最新高清无码专区| 欧美日本国产精品| 亚洲人午夜精品| 妖精视频成人观看www| 欧美第一黄色网| 亚洲精品久久久久久久久| 一本色道久久综合亚洲精品高清 | 亚洲电影免费在线观看| 久久亚洲春色中文字幕| 欧美国产免费| 日韩午夜中文字幕| 欧美人在线观看| 一区二区av| 久久福利精品| 亚洲国产精品免费| 欧美激情1区2区| 99视频精品全国免费| 欧美亚洲免费| 精品69视频一区二区三区| 久热精品视频在线观看一区| 亚洲国产一区二区a毛片| 在线中文字幕日韩| 久久福利电影| 一本色道久久综合一区| 国产精品九色蝌蚪自拍| 先锋影音久久久| 欧美电影免费观看大全| 99在线精品免费视频九九视| 国产精品色午夜在线观看| 久久婷婷丁香| 这里只有视频精品| 美脚丝袜一区二区三区在线观看| 日韩视频一区二区三区在线播放免费观看 | 一区二区亚洲精品国产| 欧美破处大片在线视频| 亚洲综合色自拍一区| 欧美成人资源| 久久av二区| 日韩香蕉视频| 国产一区美女| 国产精品啊啊啊| 麻豆av一区二区三区久久| 在线亚洲激情| 亚洲第一网站| 久久久精品国产免费观看同学| 亚洲欧洲一二三| 狠狠久久亚洲欧美专区| 国产精品日本精品| 欧美日韩精品一区| 狂野欧美一区| 欧美在线视频日韩| 亚洲伊人伊色伊影伊综合网| 亚洲高清视频在线| 久久综合色播五月| 欧美一级片在线播放| 在线一区二区三区四区| 亚洲国产精品成人一区二区| 国产日本亚洲高清| 国产精品丝袜xxxxxxx| 欧美日韩国产色视频| 免费亚洲电影| 久久网站免费| 久久久久国产成人精品亚洲午夜| 亚洲影视综合| 亚洲淫性视频| 亚洲欧美日韩国产| 亚洲一区欧美激情| 亚洲香蕉成视频在线观看| 99riav国产精品| 中国亚洲黄色| 亚洲制服av| 欧美一区91| 久久国产精品黑丝| 久久国产精品99久久久久久老狼| 午夜日韩激情| 久久超碰97中文字幕| 欧美亚洲日本一区| 久久av资源网站| 久久久久久电影| 免费亚洲电影| 欧美日韩免费一区| 国产精品久久久久国产a级| 国产精品久久久久影院色老大| 欧美日韩影院| 国产精品日日摸夜夜摸av| 国产欧美在线观看| 国产在线欧美日韩| 136国产福利精品导航| 91久久精品久久国产性色也91| 91久久精品日日躁夜夜躁国产| 亚洲美女少妇无套啪啪呻吟| 亚洲视频大全| 久久精品国产亚洲一区二区| 亚洲欧美激情一区二区| 国内偷自视频区视频综合| 红桃视频国产精品| 亚洲日韩中文字幕在线播放| 99国产精品99久久久久久| 一本色道久久综合| 午夜精品久久久久久久99水蜜桃| 欧美怡红院视频| 免费观看日韩| 99精品国产热久久91蜜凸| 午夜精品久久久久久久久| 久久久久网址| 欧美色图首页| 经典三级久久| 亚洲小说区图片区| 久久免费国产精品1| 亚洲精品美女免费| 欧美专区日韩专区| 欧美日韩国产成人精品| 国产亚洲一区二区在线观看 | 欧美午夜免费| 亚洲国产一区在线观看| 亚洲欧美视频一区二区三区| 久久这里有精品视频| 99亚洲伊人久久精品影院红桃| 久久黄色级2电影| 欧美视频导航| 亚洲日本中文| 久久亚洲美女| 中文一区二区| 欧美精品aa| 在线播放日韩专区| 先锋a资源在线看亚洲| 亚洲人成在线观看| 久久亚洲美女| 国产午夜久久| 午夜亚洲福利在线老司机| 亚洲欧洲日韩在线| 久久婷婷麻豆| 好吊色欧美一区二区三区视频| 亚洲在线第一页| 亚洲精品国产精品乱码不99按摩|