伺服器上由於怕軟體bug以及磁碟的限制,一般會將core檔案關掉.
ulimit -a檢視當前core file size設定.
這樣程式有bug崩潰以後,只能通過dmesg檢視有限資訊.典型資訊如下:
collector[1847]: segfault at 000000000000000c rip 000000000040308a rsp 0000007fbffff820 error 4
error number是由三個字位組成的,從高到底分別為bit2 bit1和bit0,所以它的取值範圍是0~7.
bit2: 值為1表示是使用者態程式記憶體訪問越界,值為0表示是核心態程式記憶體訪問越界
bit1: 值為1表示是寫操作導致記憶體訪問越界,值為0表示是讀操作導致記憶體訪問越界
bit0: 值為1表示沒有足夠的許可權訪問非法位址的內容,值為0表示訪問的非法位址根本沒有對應的頁面,也就是無效位址
一般的程式帶-g編譯的話用addr2line -e ./collector 000000000040308a就大概能定位到函式
想具體一點定位可能是哪行語句的話,用objdump -d ./collector檢視40308a對應的程式彙編**即可.
當然core檔案能更好的幫助解決問題,最好還是在程式裡用setrlimit來設定core檔案,然後根據命令列引數及是否已經生成了core檔案等邏輯來判斷是否生成core檔案.
傅利葉分析
傅利葉分析究竟是幹什麼用的?這段相對比較枯燥,已經知道了的同學可以直接跳到下乙個分割線。先說乙個最直接的用途。無論聽廣播還是看電視,我們一定對乙個詞不陌生 頻道。頻道頻道,就是頻率的通道,不同的頻道就是將不同的頻率作為乙個通道來進行資訊傳輸。下面大家嘗試一件事 先在紙上畫乙個sin x 不一定標準,...
傅利葉分析
覺得寫的真的是淺顯易懂,尤其是其圖生動形象,在這裡寫下一些讀完的理解。的部落格都寫的蠻好的 傅利葉分析主要涉及時域和頻域之間的聯絡,任何波形 時域 都能由多個不同振幅 相位的正弦波 頻域 疊加構成。傅利葉分析包括傅利葉級數和傅利葉變換,傅利葉級數的本質是將乙個週期的訊號分解成無限多分開的 離散的 正...
怎麼從vector裡刪除元素
現在用stl的人越來越多,stl確實是套很漂亮的演算法和資料結構庫.但是初用stl的人往往會遇上很多問題.從乙個容器中刪除元素,是很常用的操作,但是也是初學者常會犯錯誤的地方,刪除map和list中元素可能會犯迭代器失效的錯誤.vector是stl裡很常用的乙個容器,和map,list等容器相比,從...