2011-07-14 37 views
0

我目前正在使用大量隨機數的程序(使用C++,使用Code :: Blocks),需要一段時間才能開始;大多數情況下,它可以正常工作,但偶爾它會執行非法操作並且必須關閉。由於整個地方都有隨機數字,並且目前程序需要3-5分鐘才能到達發生錯誤的階段(此時間範圍是正常的/可接受的),所以可靠且方便地再現問題非常嚴重很困難,並且將其他所有代碼行彙報到cout以手動跟蹤事情是非常耗時的,視覺上報告與事件無關的事情並不總是有幫助,因爲即使我知道程序何時停止,我有時也不會不知道爲什麼。如何輕鬆找出程序崩潰的位置和原因?

有沒有什麼方法可以讓我在程序崩潰之前查看程序中的最後一個操作,並瞭解爲什麼此操作會導致崩潰? CodeBlocks中的某些內容是最好的,但第三方也可以。它也需要我每次測試程序時都可以使用,因爲我不知道何時會發生崩潰。

回答

0

這是調試器的用途。使用完整的調試符號構建系統,配置系統以便獲得完整的崩潰報告(在linux中是一個核心文件),然後用核心文件啓動調試器(或者在調試器中運行整個程序,但可能需要在調試器中運行一段時間通常比在其外運行要慢得多

調試器應該能夠在發生非法指令時給出程序的狀態,並且您將瞭解到狀態該程序已啓動,您可以從那裏找出哪些地方出了問題,或者可以製作幾個可能觸發錯誤的小型測試用例。

調試問題無法系統複製是一種痛苦,祝您好運!