信號的處理
程序是和網(wǎng)絡相關的,調(diào)試期間經(jīng)常地收到SIGPIPE,導致gdb停下來。看了一下gdb info,解決方法很簡單。用handle命令設置一下缺省signal的處理行為就可以了:
handle SIGPIPE nostop
如果連提示信息都不想看見,就可以這樣設置:
handle SIGPIPE nostop noprint
就可以了。其他相關信號也可以類似處理。想了解目前的signal狀態(tài)可以使用info signal
察看。
啟動配置文件
GDB使用中比較麻煩的事情,就是每次啟動,還要手動敲一把命令,特別是斷點比較多的情況,這個特便影響,工作效率。查了一下gdb info,gdb支持自動讀取一個啟動腳本文件.gdbinit,所以經(jīng)常輸入的啟動命令,就都可以寫在gdb啟動目錄的.gdbinit里面。比如
.gdbinit:
file myapp
handle SIGPIPE nostop
break ss.c:100
break ss.c:200
run
GDB和bash類似,也支持source這個命令,執(zhí)行另外一個腳本文件。所以可以修改一下.gdbinit:
.gdbinit:
file myapp
handle SIGPIPE nostop
source gdb.break
run
gdb.break:
break ss.c:100
break ss.c:200
這樣修改的斷點配置,只需要編輯gdb.break就可以了。再后來,偶而還是需要單獨啟動GDB,不想執(zhí)行自動腳本,于是又改進了一下。首先把.gdbinit命名為gdb.init,然后定義一個shell alias:
$ alias .gdb=”gdb -x gdb.init”
這樣如果需要使用自動腳本,就用.gdb命令,否則用gdb進入交互狀態(tài)的gdb。這樣配置以后可以一個簡單命令就開始調(diào)試,整個效率就能提高不少。
注:轉(zhuǎn)自http://blog.scaner.i.thu.cn/index.php/2006/04/15/gdb-tips-1/
注解
1alias命令
alias
顧名思義就是起別名的意思,在linux里,可以通過alias命令為常用命令設置快捷方式,命令格式如下: alias name='command' 例如:alias del='rm'
欲顯示系統(tǒng)已有別名,直接使用 alias或alias -p
若需要設置的命令別名比較多,可以直接修改/etc/bashrc或~/.bashrc,將需要的別名寫到里面即可,不同之處是/etc/bashrc設置的別名對于所有登錄用戶都起作用,而~/.bashrc只對目前用戶起作用。