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

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>
            欧美午夜激情在线| 国产精品欧美精品| 一区二区精品国产| 欧美午夜精品一区二区三区| 欧美成人精品一区二区三区| 亚洲视频一区在线| 一区二区三区av| 亚洲毛片一区二区| 国产亚洲一区二区在线观看| 久久手机精品视频| 亚洲在线观看免费视频| 亚洲国产精品第一区二区三区| 免费国产自线拍一欧美视频| 99在线热播精品免费| 麻豆av福利av久久av| 亚洲图片在线观看| 亚洲黄色一区| 国产一区二区福利| 亚洲第一精品久久忘忧草社区| 国产精品高清一区二区三区| 美女国产精品| 欧美一级大片在线观看| 99伊人成综合| 亚洲永久免费视频| 久久综合狠狠综合久久综合88| 亚洲在线免费观看| 欧美91大片| 国产伦理一区| 国产精品久久久久9999高清| 激情五月婷婷综合| 国产原创一区二区| 国产日韩欧美综合一区| 国产精品―色哟哟| 国产美女精品人人做人人爽| 影音先锋日韩资源| 亚洲电影在线免费观看| 在线不卡欧美| 先锋影音国产精品| 亚洲男女自偷自拍| 午夜精品久久久久影视| 亚洲美女区一区| 久久成人精品| 久久久久久一区二区| 久久日韩精品| 亚洲天堂黄色| 欧美激情亚洲自拍| 欧美色另类天堂2015| 国产精品白丝av嫩草影院| 亚洲第一精品久久忘忧草社区| 香蕉视频成人在线观看| 日韩视频在线你懂得| 亚洲免费视频网站| 久久久噜噜噜久久狠狠50岁| 久久一区二区三区四区五区| 国产精品毛片大码女人| 中国av一区| 亚洲精品字幕| 欧美一区二区三区免费在线看 | 一级日韩一区在线观看| 亚洲香蕉在线观看| 欧美吻胸吃奶大尺度电影| 一本色道久久| 久久久久免费视频| 午夜免费在线观看精品视频| 久久在线视频在线| 亚洲第一在线视频| 欧美黑人在线观看| 亚洲视频自拍偷拍| 国产精品高清在线| 欧美在线观看视频在线| 亚洲国产精品第一区二区| 久久久久久综合| 亚洲电影免费观看高清完整版在线观看 | 在线观看日韩精品| 欧美不卡福利| 午夜精品亚洲| 狠狠色丁香婷婷综合影院| 亚洲午夜久久久久久尤物| 欧美综合二区| 欧美中文字幕久久| 国产精品jvid在线观看蜜臀 | 欧美1区视频| 欧美区日韩区| 亚洲国产精品久久久久婷婷老年 | 欧美激情bt| 欧美日韩国产高清| 亚洲国产日韩欧美| 欧美在线视频在线播放完整版免费观看 | 欧美调教视频| 久久aⅴ国产紧身牛仔裤| 久久久国产视频91| 国产精品欧美日韩久久| 久久久国际精品| 亚洲一区国产精品| 在线播放豆国产99亚洲| 亚洲精品中文在线| 国内精品伊人久久久久av一坑| 亚洲国产精品日韩| 国产精品午夜在线观看| 欧美黑人在线播放| 国产精品影音先锋| 91久久精品国产91久久性色| 久久久久久久久久久成人| 亚洲精品久久久久久久久久久| 久久久精品国产一区二区三区| 欧美91福利在线观看| 欧美中文在线观看| 欧美激情 亚洲a∨综合| 亚洲精华国产欧美| 亚洲影院色无极综合| 亚洲美女黄色片| 久久久精品五月天| 久久精品av麻豆的观看方式| 欧美在线视频不卡| 正在播放欧美视频| 久久久久久久久久看片| 亚洲一区二区在线| 亚洲一区二区三区四区五区午夜| 亚洲成人在线网| 欧美一区二区成人| 亚洲私人黄色宅男| 欧美久久一级| 欧美福利视频一区| 欧美伦理在线观看| 欧美成人午夜激情在线| 国产午夜亚洲精品理论片色戒| 亚洲欧洲一区二区三区| 怡红院精品视频| 久久高清免费观看| 亚洲精品一二三| 久久免费高清| 久久久久久久尹人综合网亚洲 | 久久av资源网站| 国产精品视频免费| 亚洲午夜极品| 新67194成人永久网站| 国产精品视频免费在线观看| 国产精品99久久久久久久女警| 一区二区免费看| 欧美精品在线看| 99精品久久| 午夜国产精品影院在线观看| 欧美日韩极品在线观看一区| 亚洲欧洲日产国产综合网| 日韩亚洲欧美成人| 性欧美videos另类喷潮| 亚洲欧美日产图| 欧美日韩在线三区| 国产精品欧美风情| 亚洲自拍高清| 久久久99免费视频| 在线免费不卡视频| 欧美成人tv| 一本色道久久综合亚洲精品婷婷 | 欧美成人乱码一区二区三区| 亚洲国产欧美在线人成| 一本久久知道综合久久| 国产精品久久久久毛片大屁完整版| 一区二区三区 在线观看视频| 性久久久久久久| 亚洲高清影视| 国产精品久久国产三级国电话系列| 欧美一区2区视频在线观看| 欧美www在线| 亚洲一区二区在线免费观看视频| 国产精品视频1区| 久久久国产91| 一本色道久久综合亚洲二区三区| 久久国产精品久久w女人spa| 亚洲成人原创| 国产精品大片| 久久综合网络一区二区| 亚洲视频精品| 亚洲福利在线视频| 国内精品久久久久影院色| 久久亚洲一区二区三区四区| 亚洲欧洲精品一区二区精品久久久| 久色婷婷小香蕉久久| 亚洲精品孕妇| 另类春色校园亚洲| 亚洲小说春色综合另类电影| 狠狠色噜噜狠狠色综合久| 欧美精品v日韩精品v国产精品| 亚洲在线视频免费观看| 亚洲国产成人久久| 久久漫画官网| 西西人体一区二区| 一区二区三区日韩| **性色生活片久久毛片| 国产精品久久久久天堂| 女女同性精品视频| 欧美中文字幕第一页| 一本综合久久| 欧美激情a∨在线视频播放| 久久久五月天| 久久精品72免费观看| 亚洲欧美第一页| 国产一区二区三区四区三区四| 欧美日韩一区二区三区在线| 一本色道久久加勒比88综合|