我有C++軟件(服務器)和它的崩潰,我不知道確切的 問題是基於日誌。我想做一些事情,在 崩潰或退出該過程後,我會通過這個 文件gdb
轉儲過程中的Linux和分析什麼是做什麼不應該。gdb導入崩潰/退出過程中的進程轉儲?
任何人都在過去做點什麼? 有人可以幫助我瞭解一些信息或想法嗎?
謝謝!
我有C++軟件(服務器)和它的崩潰,我不知道確切的 問題是基於日誌。我想做一些事情,在 崩潰或退出該過程後,我會通過這個 文件gdb
轉儲過程中的Linux和分析什麼是做什麼不應該。gdb導入崩潰/退出過程中的進程轉儲?
任何人都在過去做點什麼? 有人可以幫助我瞭解一些信息或想法嗎?
謝謝!
你想要的是一個定期的核心轉儲,它可以與GDB一起查找崩潰位置。 查看http://linux.die.net/man/5/core的信息。
如果守護進程在當前目錄所在的位置沒有寫權限,則不會生成內核。重定向它,嘗試;
mkdir /tmp/corefiles
chmod 777 /tmp/corefiles
echo "/tmp/corefiles/core" > /proc/sys/kernel/core_pattern
您是否在尋找核心文件?在啓動您的守護程序腳本,添加此命令(假設解釋爲腳本是bash
):
ulimit -c unlimited
確立了核心文件,以「無限」(這通常是默認爲0)的最大尺寸。
如果你有你的守護程序的源代碼,以'-g -Wall編譯它們''gcc'編譯器的標誌是有幫助的。 – 2012-01-09 13:41:04
@Basile Starynkevitch:這兩個標誌都存在於Makefile中 – Svisstack 2012-01-09 13:43:07
然後獲取內核並使用'gdb/path/to/daemon core'進行調試 – 2012-01-09 13:43:57