2010-09-14 101 views
1

我有一個用C++編寫的模擬器,它讀取一個文件並逐行處理它。這是一個耗時的過程。我經常遇到朗姆酒時間錯誤,程序在15-20分鐘後崩潰。我開始調試,程序花費相同的時間來達到我設定的中斷點。我檢查一些變量,並逐步查看代碼,看看發生了什麼,進行一些更改並重新啓動我的程序。大多數情況下,在進行實際的代碼更改之前,我必須多次調試該程序。每次等待15分鐘以便執行到達斷點是浪費的。有沒有辦法讓程序狀態保存一個特定的斷點,然後再從那裏開始運行/調試。程序/ IDE保存正在運行的程序的狀態並稍後恢復

我相信我不是唯一一個必須面對這個問題的人。必須有解決方案。

回答

0

我認爲最好的方法是具體情況。在你的情況下,創建一些格式來保存你的進度並保存它,或者隨着你的進展將它更新到一個文件中。然後,重新啓動後,確定是恢復還是重新啓動的一些邏輯。

另外,將程序分解成可僞造或跳過的階段?

如果不這樣做,則需要在「安全恢復點」和重新加載時進行低效且懷疑甚至可能的內存/註冊表轉儲。我認爲最接近實現的是具有「快照」的全環境虛擬化(VMWare Workstation,Windows Virtual PC?)這可能是一種選擇,但速度幾乎一樣慢。

+0

有很多使用的數據結構。即使我可以做這樣的事情,但要花費很多時間來構建這樣的事情並驗證它。我還沒有自己建立模擬器。這是別人的代碼,它有超過50個源文件。另外,我不能跳過階段,因爲它基本上是逐行讀取一個非常大的文件。步驟很小,但文件很大 – cyrux 2010-09-14 23:58:11

+0

嗯,聽起來像一個艱難的任務 – 2010-09-15 01:19:19