• <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>
            posts - 297,  comments - 15,  trackbacks - 0

            在程序不尋常退出時(shí),內(nèi)核會(huì)在當(dāng)前工作目錄下生成一個(gè)core文件(是一個(gè)內(nèi)存映像,同時(shí)加上調(diào)試信息)。使用gdb來(lái)查看core文件,可以指示出導(dǎo)致程序出錯(cuò)的代碼所在文件和行數(shù)。


            1.core文件的生成開(kāi)關(guān)和大小限制
            ---------------------------------
             1)使用ulimit -c命令可查看core文件的生成開(kāi)關(guān)。若結(jié)果為0,則表示關(guān)閉了此功能,不會(huì)生成core文件。
             2) 使用ulimit -c filesize命令,可以限制core文件的大小(filesize的單位為kbyte)。若ulimit -c unlimited,則表示core文件的大小不受限制。如果生成的信息超過(guò)此大小,將會(huì)被裁剪,最終生成一個(gè)不完整的core文件。在調(diào)試此core文件的時(shí)候,gdb會(huì)提示錯(cuò)誤。


            2.core文件的名稱和生成路徑
            ----------------------------
            core文件生成路徑:
            輸入可執(zhí)行文件運(yùn)行命令的同一路徑下。
            若系統(tǒng)生成的core文件不帶其它任何擴(kuò)展名稱,則全部命名為core。新的core文件生成將覆蓋原來(lái)的core文件。

            1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作為擴(kuò)展。文件內(nèi)容為1,表示添加pid作為擴(kuò)展名,生成的core文件格式為core.xxxx;為0則表示生成的core文件同一命名為core。
            可通過(guò)以下命令修改此文件:
            echo "1" > /proc/sys/kernel/core_uses_pid

            2)proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
            可通過(guò)以下命令修改此文件:
            echo "/corefile/core-%e-%p-%t" > core_pattern,可以將core文件統(tǒng)一生成到/corefile目錄下,產(chǎn)生的文件名為core-命令名-pid-時(shí)間戳
            以下是參數(shù)列表:
                %p - insert pid into filename 添加pid
                %u - insert current uid into filename 添加當(dāng)前uid
                %g - insert current gid into filename 添加當(dāng)前gid
                %s - insert signal that caused the coredump into the filename 添加導(dǎo)致產(chǎn)生core的信號(hào)
                %t - insert UNIX time that the coredump occurred into filename 添加core文件生成時(shí)的unix時(shí)間
                %h - insert hostname where the coredump happened into filename 添加主機(jī)名
                %e - insert coredumping executable name into filename 添加命令名


            3.core文件的查看
            -----------------
             core文件需要使用gdb來(lái)查看。
             gdb ./a.out
             core-file core.xxxx
             使用bt命令即可看到程序出錯(cuò)的地方。 
            以下兩種命令方式具有相同的效果,但是在有些環(huán)境下不生效,所以推薦使用上面的命令。 
            1)gdb -core=core.xxxx
            file ./a.out
            bt 
            2)gdb -c core.xxxx
            file ./a.out
            bt


            4.開(kāi)發(fā)板上使用core文件調(diào)試
            -----------------------------
            如果開(kāi)發(fā)板的操作系統(tǒng)也是linux,core調(diào)試方法依然適用。如果開(kāi)發(fā)板上不支持gdb,可將開(kāi)發(fā)板的環(huán)境(依賴庫(kù))、可執(zhí)行文件和core文件拷貝到PC的linux下
            在PC上調(diào)試開(kāi) 發(fā)板上產(chǎn)生的core文件,需要使用交叉編譯器自帶的gdb,并且需要在gdb中指定solib-absolute-prefix和solib- search-path兩個(gè)變量以保證gdb能夠找到可執(zhí)行程序的依賴庫(kù)路徑。有一種建立配置文件的方法,不需要每次啟動(dòng)gdb都配置以上變量,即:在待 運(yùn)行g(shù)db的路徑下建立.gdbinit。
            配置文件內(nèi)容:
            set solib-absolute-prefix YOUR_CROSS_COMPILE_PATH
            set solib-search-path YOUR_CROSS_COMPILE_PATH
            set solib-search-path YOUR_DEVELOPER_TOOLS_LIB_PATH
            handle SIG32 nostop noprint pass


            注意:待調(diào)試的可執(zhí)行文件,在編譯的時(shí)候需要加-g,core文件才能正常顯示出錯(cuò)信息!有時(shí)候core信息很大,超出了開(kāi)發(fā)板的空間限制,生成的core信息會(huì)殘缺不全而無(wú)法使用,可以通過(guò)掛載到PC的方式來(lái)規(guī)避這一點(diǎn)。


            轉(zhuǎn)自:

            http://blog.chinaunix.net/u2/67780/showart_2070065.html

            posted on 2009-11-19 17:33 chatler 閱讀(281) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux_Coding
            <2009年3月>
            22232425262728
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺(jué)這個(gè)博客還是不錯(cuò),雖然做的東西和我不大相關(guān),覺(jué)得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久久亚洲精品中文字幕| 一本色道久久综合狠狠躁| 久久久噜噜噜久久中文福利| 久久乐国产综合亚洲精品| 久久久无码精品午夜| 日本亚洲色大成网站WWW久久| 国产成人无码精品久久久免费| 久久亚洲国产午夜精品理论片| AV色综合久久天堂AV色综合在| 久久水蜜桃亚洲av无码精品麻豆 | 一本一本久久aa综合精品| 一本久久a久久精品vr综合| 色婷婷综合久久久久中文| 国产亚洲精品美女久久久| 久久精品国产影库免费看| 国产精品青草久久久久福利99 | 久久久久国产一级毛片高清版| 久久国产精品久久国产精品| 久久亚洲国产精品一区二区| 国产精品嫩草影院久久| 伊人久久大香线蕉无码麻豆| 久久久久久久97| 91精品国产色综合久久| 久久国产高清字幕中文| 欧美精品福利视频一区二区三区久久久精品 | 狠狠综合久久AV一区二区三区| 亚洲午夜久久久影院伊人| 久久综合中文字幕| 国产精品久久久久免费a∨| 蜜臀av性久久久久蜜臀aⅴ| 国产精品成人精品久久久| 国产精品99久久久久久宅男小说| 色狠狠久久AV五月综合| 久久精品国产亚洲精品| 伊人久久大香线蕉亚洲| 国产三级观看久久| 亚洲av成人无码久久精品| 国产精品伊人久久伊人电影| 久久受www免费人成_看片中文| 久久不见久久见免费视频7| 亚洲精品无码久久毛片|