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

posts - 17,comments - 7,trackbacks - 0

當(dāng)我們的程序崩潰時(shí),內(nèi)核有可能把該程序當(dāng)前內(nèi)存映射到core文件里,方便程序員找到程序出現(xiàn)問題的地方。最常出 現(xiàn)的,幾乎所有C程序員都出現(xiàn)過的錯(cuò)誤就是“段錯(cuò)誤”了。也是最難查出問題原因的一個(gè)錯(cuò)誤。下面我們就針對(duì)“段錯(cuò)誤”來分析core文件的產(chǎn)生、以及我們 如何利用core文件找到出現(xiàn)崩潰的地方。

何謂core文件

當(dāng)一個(gè)程序崩潰時(shí),在進(jìn)程當(dāng)前工作目錄的core文件中復(fù)制了該進(jìn)程的存儲(chǔ)圖像。core文件僅僅是一個(gè)內(nèi)存映象(同時(shí)加上調(diào)試信息),主要是用來調(diào)試的。

當(dāng)程序接收到以下UNIX信號(hào)會(huì)產(chǎn)生core文件:

名字

說明

ANSI C  POSIX.1

SVR4  4.3+BSD

缺省動(dòng)作

SIGABRT

異常終止(abort)

  .       .

  .      .

終止w/core

SIGBUS

硬件故障

          .

  .      .

終止w/core

SIGEMT

硬件故障

 

  .      .

終止w/core

SIGFPE

算術(shù)異常

  .       .

  .      .

終止w/core

SIGILL

非法硬件指令

  .       .

  .      .

終止w/core

SIGIOT

硬件故障

 

  .      .

終止w/core

SIGQUIT

終端退出符

          .

  .      .

終止w/core

SIGSEGV

無效存儲(chǔ)訪問

  .       .

  .      .

終止w/core

SIGSYS

無效系統(tǒng)調(diào)用

 

  .      .

終止w/core

SIGTRAP

硬件故障

 

  .      .

終止w/core

SIGXCPU

超過CPU限制(setrlimit)

 

  .      .

終止w/core

SIGXFSZ

超過文件長度限制(setrlimit)

 

  .      .

終止w/core

在系統(tǒng)默認(rèn)動(dòng)作列,“終止w/core”表示在進(jìn)程當(dāng)前工作目錄的core文件中復(fù)制了該進(jìn)程的存儲(chǔ)圖像(該文件名為core,由此可以看出這種功能很久之前就是UNIX功能的一部分)。大多數(shù)UNIX調(diào)試程序都使用core文件以檢查進(jìn)程在終止時(shí)的狀態(tài)。

core文件的產(chǎn)生不是POSIX.1所屬部分,而是很多UNIX版本的實(shí)現(xiàn)特征。UNIX第6版沒有檢查條件 (a)和(b),并且其源代碼中包含如下說明:“如果你正在找尋保護(hù)信號(hào),那么當(dāng)設(shè)置-用戶-ID命令執(zhí)行時(shí),將可能產(chǎn)生大量的這種信號(hào)”。4.3 + BSD產(chǎn)生名為core.prog的文件,其中prog是被執(zhí)行的程序名的前1 6個(gè)字符。它對(duì)core文件給予了某種標(biāo)識(shí),所以是一種改進(jìn)特征。

表中“硬件故障”對(duì)應(yīng)于實(shí)現(xiàn)定義的硬件故障。這些名字中有很多取自UNIX早先在DP-11上的實(shí)現(xiàn)。請查看你所使用的系統(tǒng)的手冊,以確切地確定這些信號(hào)對(duì)應(yīng)于哪些錯(cuò)誤類型。

下面比較詳細(xì)地說明這些信號(hào)。

SIGABRT 調(diào)用abort函數(shù)時(shí)產(chǎn)生此信號(hào)。進(jìn)程異常終止。

SIGBUS  指示一個(gè)實(shí)現(xiàn)定義的硬件故障。

SIGEMT  指示一個(gè)實(shí)現(xiàn)定義的硬件故障。

EMT這一名字來自PDP-11的emulator trap 指令。

SIGFPE  此信號(hào)表示一個(gè)算術(shù)運(yùn)算異常,例如除以0,浮點(diǎn)溢出等。

SIGILL  此信號(hào)指示進(jìn)程已執(zhí)行一條非法硬件指令。

4.3BSD由abort函數(shù)產(chǎn)生此信號(hào)。SIGABRT現(xiàn)在被用于此。

SIGIOT  這指示一個(gè)實(shí)現(xiàn)定義的硬件故障。

IOT這個(gè)名字來自于PDP-11對(duì)于輸入/輸出TRAP(input/output TRAP)指令的縮寫。系統(tǒng)V的早期版本,由abort函數(shù)產(chǎn)生此信號(hào)。SIGABRT現(xiàn)在被用于此。

SIGQUIT 當(dāng)用戶在終端上按退出鍵(一般采用Ctrl-\)時(shí),產(chǎn)生此信號(hào),并送至前臺(tái)進(jìn)

程組中的所有進(jìn)程。此信號(hào)不僅終止前臺(tái)進(jìn)程組(如SIGINT所做的那樣),同時(shí)產(chǎn)生一個(gè)core文件。

SIGSEGV 指示進(jìn)程進(jìn)行了一次無效的存儲(chǔ)訪問。

名字SEGV表示“段違例(segmentation violation)”。

SIGSYS  指示一個(gè)無效的系統(tǒng)調(diào)用。由于某種未知原因,進(jìn)程執(zhí)行了一條系統(tǒng)調(diào)用指令,

但其指示系統(tǒng)調(diào)用類型的參數(shù)卻是無效的。

SIGTRAP 指示一個(gè)實(shí)現(xiàn)定義的硬件故障。

此信號(hào)名來自于PDP-11的TRAP指令。

SIGXCPU SVR4和4.3+BSD支持資源限制的概念。如果進(jìn)程超過了其軟C P U時(shí)間限制,則產(chǎn)生此信號(hào)。

SIGXFSZ 如果進(jìn)程超過了其軟文件長度限制,則SVR4和4.3+BSD產(chǎn)生此信號(hào)。

摘自《UNIX環(huán)境高級(jí)編程》第10章 信號(hào)。

 

使用core文件調(diào)試程序

看下面的例子:

/*core_dump_test.c*/
 #include <stdio.h>
const char *str = "test";
void core_test(){
    str[1] = 'T';
}

int main()
{
    core_test();
    return 0;
}

編譯:
gcc –g core_dump_test.c -o core_dump_test

如果需要調(diào)試程序的話,使用gcc編譯時(shí)加上-g選項(xiàng),這樣調(diào)試core文件的時(shí)候比較容易找到錯(cuò)誤的地方。

執(zhí)行:
 ./core_dump_test
段錯(cuò)誤

運(yùn)行core_dump_test程序出現(xiàn)了“段錯(cuò)誤”,但沒有產(chǎn)生core文件。這是因?yàn)橄到y(tǒng)默認(rèn)core文件的大小為0,所以沒有創(chuàng)建。可以用ulimit命令查看和修改core文件的大小。
ulimit -c
0
ulimit -c 1000
ulimit -c 1000

-c 指定修改core文件的大小,1000指定了core文件大小。也可以對(duì)core文件的大小不做限制,如:

ulimit -c unlimited
ulimit -c unlimited

如果想讓修改永久生效,則需要修改配置文件,如 .bash_profile/etc/profile/etc/security/limits.conf

再次執(zhí)行:
./core_dump_test
段錯(cuò)誤
(core dumped)
ls core.*
core.6133

可以看到已經(jīng)創(chuàng)建了一個(gè)core.6133的文件.6133core_dump_test程序運(yùn)行的進(jìn)程ID

調(diào)式core文件
core文件是個(gè)二進(jìn)制文件,需要用相應(yīng)的工具來分析程序崩潰時(shí)的內(nèi)存映像。

file core.6133

core.6133: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style, from 'core_dump_test'

Linux下可以用GDB來調(diào)試core文件。

gdb core_dump_test core.6133

GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
Core was generated by `./core_dump_test'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/tls/libc.so.6...done.
Loaded symbols for /lib/tls/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
#0  0x080482fd in core_test () at core_dump_test.c:7
7           str[1] = 'T';
(gdb) where
#0  0x080482fd in core_test () at core_dump_test.c:7
#1  0x08048317 in main () at core_dump_test.c:12
#2  0x42015574 in __libc_start_main () from /lib/tls/libc.so.6

GDB中鍵入where,就會(huì)看到程序崩潰時(shí)堆棧信息(當(dāng)前函數(shù)之前的所有已調(diào)用函數(shù)的列表(包括當(dāng)前函數(shù)),gdb只顯示最近幾個(gè)),我們很容易找到我們的程序在最后崩潰的時(shí)候調(diào)用了core_dump_test.c 7行的代碼,導(dǎo)致程序崩潰。注意:在編譯程序的時(shí)候要加入選項(xiàng)-g。您也可以試試其他命令, 如 framlist等。更詳細(xì)的用法,請查閱GDB文檔。

core文件創(chuàng)建在什么位置

在進(jìn)程當(dāng)前工作目錄的下創(chuàng)建。通常與程序在相同的路徑下。但如果程序中調(diào)用了chdir函數(shù),則有可能改變了當(dāng)前工 作目錄。這時(shí)core文件創(chuàng)建在chdir指定的路徑下。有好多程序崩潰了,我們卻找不到core文件放在什么位置。和chdir函數(shù)就有關(guān)系。當(dāng)然程序 崩潰了不一定都產(chǎn)生core文件。

什么時(shí)候不產(chǎn)生core文件

在下列條件下不產(chǎn)生core文件:
( a )進(jìn)程是設(shè)置-用戶-ID,而且當(dāng)前用戶并非程序文件的所有者;
( b )進(jìn)程是設(shè)置-組-ID,而且當(dāng)前用戶并非該程序文件的組所有者;
( c )用戶沒有寫當(dāng)前工作目錄的許可權(quán);
( d )文件太大。core文件的許可權(quán)(假定該文件在此之前并不存在)通常是用戶讀/寫,組讀和其他讀。

利用GDB調(diào)試core文件,當(dāng)遇到程序崩潰時(shí)我們不再束手無策。


posted on 2008-12-10 21:23 。。。。 閱讀(14789) 評(píng)論(0)  編輯 收藏 引用 所屬分類: c++ 編譯 調(diào)試 開發(fā)環(huán)境
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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好男人在线观看| 亚洲精品1区| 欧美精品亚洲二区| 久久精品国产综合精品| 欧美女激情福利| 麻豆精品在线视频| 国产欧美一区二区精品仙草咪| 亚洲欧洲视频在线| 亚洲国产欧美一区| 久久精品日韩| 久久久精品网| 国产无一区二区| 亚洲欧美激情四射在线日 | 日韩一区二区电影网| 久久精品欧美日韩| 久久成人免费电影| 国产精品视频自拍| 亚洲视频在线观看免费| 中文亚洲欧美| 欧美日韩一本到| 亚洲另类一区二区| 99热免费精品在线观看| 欧美激情一区二区在线 | 亚洲视频大全| 亚洲女同同性videoxma| 国产精品mm| 亚洲深夜影院| 西西人体一区二区| 国产欧美va欧美不卡在线| 亚洲一级黄色| 久久国产高清| 伊人夜夜躁av伊人久久| 久久亚洲私人国产精品va| 免费的成人av| 日韩午夜免费| 欧美吻胸吃奶大尺度电影| 国产精品99久久久久久久vr| 亚洲欧美日韩一区在线| 国产精品自在欧美一区| 欧美一区二区三区四区在线观看| 久久九九国产| 亚洲国产女人aaa毛片在线| 欧美黄网免费在线观看| 亚洲美女区一区| 亚洲女同同性videoxma| 国产一区视频在线看| 久久这里有精品视频| 91久久精品一区| 亚洲欧美一区二区激情| 国产一在线精品一区在线观看| 久久久精品一区| 亚洲人成毛片在线播放| 香蕉久久一区二区不卡无毒影院| 国产一区二区三区最好精华液| 美国成人毛片| 亚洲视频在线观看免费| 免费在线欧美视频| 亚洲一区二区三区高清| 好吊视频一区二区三区四区| 欧美激情一区二区三区| 亚洲欧美日韩精品久久亚洲区| 美女爽到呻吟久久久久| 在线亚洲激情| 亚洲成人影音| 国产精品久久久久毛片软件 | 久久在线视频在线| 亚洲精品一区在线观看| 国产欧美日韩三级| 欧美黑人在线播放| 欧美综合激情网| 在线视频日韩| 欧美激情网友自拍| 欧美在线精品免播放器视频| 亚洲精品女av网站| 黑人一区二区| 国产精品男女猛烈高潮激情| 免费不卡中文字幕视频| 午夜精品一区二区在线观看 | 欧美大片在线影院| 欧美一区二区视频网站| 日韩午夜一区| 最新高清无码专区| 国产亚洲欧美激情| 国产精品国产| 欧美日韩另类在线| 欧美jizzhd精品欧美巨大免费| 亚洲欧美一区在线| 在线天堂一区av电影| 亚洲国产精品一区二区第四页av | 久色成人在线| 欧美在线视频观看| 亚洲综合国产| 中文亚洲字幕| 亚洲免费观看视频| 最近中文字幕日韩精品| 精品1区2区3区4区| 韩日欧美一区| 极品尤物久久久av免费看| 国产日韩精品一区二区| 国产精品欧美一区喷水| 国产精品成人一区二区网站软件 | 亚洲国产精品视频一区| 免费日韩成人| 欧美成人精品三级在线观看| 老司机精品视频网站| 久久九九电影| 久久亚洲电影| 美女啪啪无遮挡免费久久网站| 久久九九免费视频| 久久视频国产精品免费视频在线 | 欧美一区三区二区在线观看| 亚洲一区视频| 亚洲自拍都市欧美小说| 亚洲欧美日韩国产成人精品影院| 一区二区三区免费网站| 亚洲一级二级| 性欧美大战久久久久久久久| 欧美在线三级| 久久亚洲国产精品一区二区| 久久一区亚洲| 亚洲国产精品va在线看黑人| 亚洲人精品午夜| 9色精品在线| 亚洲在线视频观看| 欧美在线视频不卡| 另类尿喷潮videofree| 欧美激情在线观看| 国产精品va在线| 国产一区二区日韩精品| 亚洲第一狼人社区| 亚洲全黄一级网站| 亚洲欧美成人精品| 久久综合伊人77777尤物| 欧美大学生性色视频| 亚洲国产精品一区| 亚洲午夜久久久久久久久电影院| 欧美一级淫片aaaaaaa视频| 久久免费少妇高潮久久精品99| 欧美69wwwcom| 国产精品免费看| 亚洲第一区在线| 亚洲一区二区精品| 久久永久免费| 99精品热视频| 久久免费视频网| 欧美日韩一本到| 一区在线播放| 亚洲欧美日韩另类| 欧美不卡高清| 午夜亚洲激情| 欧美日韩黄色一区二区| 黑人巨大精品欧美一区二区小视频| 亚洲理论在线观看| 久久久久一区二区| 99v久久综合狠狠综合久久| 久久av一区二区三区漫画| 欧美人成免费网站| 在线免费观看日韩欧美| 亚洲欧美韩国| 亚洲日韩欧美一区二区在线| 欧美有码在线视频| 国产精品激情电影| 亚洲三级影院| 久久综合色8888| 亚洲欧美综合精品久久成人 | 欧美深夜福利| 亚洲破处大片| 卡一卡二国产精品| 亚洲欧美视频在线观看视频| 欧美激情综合亚洲一二区 | 亚洲制服av| 亚洲精品小视频在线观看| 久久免费少妇高潮久久精品99| 国产精品入口66mio| 一本久久综合| 亚洲片区在线| 欧美国产日韩一二三区| 亚洲福利免费| 模特精品裸拍一区| 久久精品视频免费| 国产亚洲精品久久久久久| 亚洲综合精品自拍| 一本大道久久a久久综合婷婷| 欧美大胆成人| 亚洲人成在线播放网站岛国| 欧美成人在线免费观看| 久久精品一区二区三区中文字幕| 国产日韩欧美在线播放不卡| 午夜久久美女| 亚洲欧美电影在线观看| 国产精品亚洲网站| 午夜在线电影亚洲一区| 亚洲视频中文| 国产伦精品一区二区三区高清 | 中文在线不卡| 一区二区三区四区五区在线| 欧美视频日韩视频| 亚洲欧美另类综合偷拍| 亚洲在线中文字幕| 国产色综合久久|