• <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>

            elva

            gdb中忽略信號(hào)處理

            信號(hào)(Signals)

            信號(hào)是一種軟中斷,是一種處理異步事件的方法。一般來(lái)說(shuō),操作系統(tǒng)都支持許多信號(hào)。尤其是UNIX,比較重要應(yīng)用程序一般都會(huì)處理信號(hào)。UNIX定義了許 多信號(hào),比如SIGINT表示中斷字符信號(hào),也就是Ctrl+C的信號(hào),SIGBUS表示硬件故障的信號(hào);SIGCHLD表示子進(jìn)程狀態(tài)改變信號(hào); SIGKILL表示終止程序運(yùn)行的信號(hào),等等。信號(hào)量編程是UNIX下非常重要的一種技術(shù)。

            GDB有能力在你調(diào)試程序的時(shí)候處理任何一種信號(hào),你可以告訴GDB需要處理哪一種信號(hào)。你可以要求GDB收到你所指定的信號(hào)時(shí),馬上停住正在運(yùn)行的程序,以供你進(jìn)行調(diào)試。你可以用GDB的handle命令來(lái)完成這一功能。

            handle
            在GDB中定義一個(gè)信號(hào)處理。信號(hào)可以以SIG開頭或不以 SIG開頭,可以用定義一個(gè)要處理信號(hào)的范圍(如:SIGIO-SIGKILL,表示處理從SIGIO信號(hào)到SIGKILL的信號(hào),其中包括SIGIO, SIGIOT,SIGKILL三個(gè)信號(hào)),也可以使用關(guān)鍵字all來(lái)標(biāo)明要處理所有的信號(hào)。一旦被調(diào)試的程序接收到信號(hào),運(yùn)行程序馬上會(huì)被GDB停住,以 供調(diào)試。其可以是以下幾種關(guān)鍵字的一個(gè)或多個(gè)。

            nostop
            當(dāng)被調(diào)試的程序收到信號(hào)時(shí),GDB不會(huì)停住程序的運(yùn)行,但會(huì)打出消息告訴你收到這種信號(hào)。
            stop
            當(dāng)被調(diào)試的程序收到信號(hào)時(shí),GDB會(huì)停住你的程序。
            print
            當(dāng)被調(diào)試的程序收到信號(hào)時(shí),GDB會(huì)顯示出一條信息。
            noprint
            當(dāng)被調(diào)試的程序收到信號(hào)時(shí),GDB不會(huì)告訴你收到信號(hào)的信息。
            pass
            noignore
            當(dāng)被調(diào)試的程序收到信號(hào)時(shí),GDB不處理信號(hào)。這表示,GDB會(huì)把這個(gè)信號(hào)交給被調(diào)試程序會(huì)處理。
            nopass
            ignore
            當(dāng)被調(diào)試的程序收到信號(hào)時(shí),GDB不會(huì)讓被調(diào)試程序來(lái)處理這個(gè)信號(hào)。


            info signals
            info handle
            查看有哪些信號(hào)在被GDB檢測(cè)中。

            另外補(bǔ)充:

            信號(hào)的處理
            程序是和網(wǎng)絡(luò)相關(guān)的,調(diào)試期間經(jīng)常地收到SIGPIPE,導(dǎo)致gdb停下來(lái)。看了一下gdb info,解決方法很簡(jiǎn)單。用handle命令設(shè)置一下缺省signal的處理行為就可以了:
               handle SIGPIPE nostop
            如果連提示信息都不想看見,就可以這樣設(shè)置:
               handle SIGPIPE nostop noprint
            就可以了。其他相關(guān)信號(hào)也可以類似處理。想了解目前的signal狀態(tài)可以使用info signal察看。

            啟動(dòng)配置文件
            GDB使用中比較麻煩的事情,就是每次啟動(dòng),還要手動(dòng)敲一把命令,特別是斷點(diǎn)比較多的情況,這個(gè)特便影響,工作效率。查了一下gdb info,gdb支持自動(dòng)讀取一個(gè)啟動(dòng)腳本文件.gdbinit,所以經(jīng)常輸入的啟動(dòng)命令,就都可以寫在gdb啟動(dòng)目錄的.gdbinit里面。比如
            .gdbinit:
               file myapp
               handle SIGPIPE nostop
               break ss.c:100
               break ss.c:200
               run
            GDB和bash類似,也支持source這個(gè)命令,執(zhí)行另外一個(gè)腳本文件。所以可以修改一下.gdbinit:
            .gdbinit:
               file myapp
               handle SIGPIPE nostop
               source gdb.break
               run
            gdb.break:
               break ss.c:100
               break ss.c:200
            這樣修改的斷點(diǎn)配置,只需要編輯gdb.break就可以了。再后來(lái),偶而還是需要單獨(dú)啟動(dòng)GDB,不想執(zhí)行自動(dòng)腳本,于是又改進(jìn)了一下。首先把.gdbinit命名為gdb.init,然后定義一個(gè)shell alias:
               $ alias .gdb=”gdb -x gdb.init”

            這樣如果需要使用自動(dòng)腳本,就用.gdb命令,否則用gdb進(jìn)入交互狀態(tài)的gdb。這樣配置以后可以一個(gè)簡(jiǎn)單命令就開始調(diào)試,整個(gè)效率就能提高不少。

            注:轉(zhuǎn)自http://blog.scaner.i.thu.cn/index.php/2006/04/15/gdb-tips-1/

            注解

            1alias命令

            alias顧名思義就是起別名的意思,在linux里,可以通過(guò)alias命令為常用命令設(shè)置快捷方式,命令格式如下: alias name='command' 例如:alias del='rm'

            欲顯示系統(tǒng)已有別名,直接使用 alias或alias -p

            若需要設(shè)置的命令別名比較多,可以直接修改/etc/bashrc或~/.bashrc,將需要的別名寫到里面即可,不同之處是/etc/bashrc設(shè)置的別名對(duì)于所有登錄用戶都起作用,而~/.bashrc只對(duì)目前用戶起作用。

            posted on 2011-11-01 14:46 葉子 閱讀(5802) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C\C++

            国产精品99久久久久久www| 久久精品国产清自在天天线| 一本色道久久综合狠狠躁篇| 久久综合伊人77777麻豆| 狠狠色狠狠色综合久久| 国产精品久久久久9999高清| 久久精品国产只有精品66| 亚洲国产成人久久综合野外| 狠狠色丁香久久婷婷综合| 久久久久夜夜夜精品国产| 亚洲国产高清精品线久久| 亚洲精品无码久久久影院相关影片| 国产精品久久久久久久久免费| 青青热久久国产久精品 | 伊人久久大香线蕉亚洲| 亚洲精品高清国产一久久| 色播久久人人爽人人爽人人片AV| 久久精品国产99国产精偷 | 亚洲精品午夜国产VA久久成人| 久久91精品国产91久久小草| 久久人人爽人人爽人人片av麻烦| 国产精品美女久久久久网| 久久久久久久波多野结衣高潮 | 久久精品国产91久久麻豆自制 | 18禁黄久久久AAA片| 久久91综合国产91久久精品| 国产一区二区久久久| 狠狠色综合网站久久久久久久 | 久久午夜福利电影| 久久99精品综合国产首页| 欧美黑人激情性久久| 国产激情久久久久久熟女老人 | 欧美黑人激情性久久| 亚洲欧洲中文日韩久久AV乱码| 国产成人精品久久一区二区三区av | 久久精品天天中文字幕人妻| 久久夜色精品国产亚洲| 中文字幕精品久久久久人妻| 四虎影视久久久免费| 亚洲v国产v天堂a无码久久| 久久精品国产亚洲Aⅴ蜜臀色欲|