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