Posted on 2011-04-14 08:19
S.l.e!ep.¢% 閱讀(567)
評論(0) 編輯 收藏 引用 所屬分類:
Unix
程序出現段錯誤,短時間內不能重現,掛gdb的時間太長,客戶端不能一直保持連接,我想讓gdb跑在服務器后臺可以避免這種情況,輸出重定向比較容易,但是如何重定向輸入呢,為了解決這個問題,google了半天,找輸入重定向的方法,浪費了大量時間,才發現gdb本身就支持了這個功能,廢話少說,進入正題。
??????? gdb的--command=file選項,支持從文件輸入命令,所以調試的時候先把命令預存在文件中,如把下面的命令存入step文件:
b function1
c
bt
q
?然后 nohup gdb -p 12345 --command=step &
就可以在nohup.out中找程序出問題的地方了
當然還有更好的辦法,讓程序產生coredump,man ulimit
ulimit -a 查看當前的設置
ulimit -c unlimit 設置coredump文件的大小
要在程序啟動前設置才有效
注:在/etc/profile中有下面一行,默認不產生core dump文件,注意修改
ulimit -S -c 0 > /dev/null 2>&1
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/rainharder/archive/2007/12/30/2004635.aspx