2013-04-12 45 views
0

我有一個C++程序,它以一個庫完成的「重」計算開始。 在釋放模式下大約需要10秒,但在調試模式下大約需要15分鐘。所以,如果我想調試程序的其餘部分,我不必浪費時間。保存調試狀態以跳過長時間的計算

一個可能的解決方案是保存到文件在釋放模式的計算結果,並與預處理指令一樣,調試模式閱讀:

#ifdef _DEBUG 
    read_result_from_file(); 
#else 
    do_heavy_computation(); 
    save_result_to_file(); 
#endif 

但是,如果存在其他解決方案,我想知道。例如,是否可以保存調試會話的狀態,以便第二次可以在初始計算後開始調試?

+1

計算後的斷點?或者如果在調試模式下做模擬計算? –

+2

在虛擬機中運行程序。計算完成後,拍攝快照。要再次調試,請恢復快照。 –

+1

我想他有這個斷點,但如果計算持續時間很長,它不會爲他節省時間。 –

回答

1

很可能您的長運行時間(至少部分)是由於迭代器中的額外調試代碼和STL中的相關函數造成的。看看iterator debugging的MS頁面。

這可能不會花你15分鐘到10秒,但它可能會減少到接近10秒的時間比15分鐘。

1

許多IDE可以爲不同的(子)項目/庫或甚至不同的翻譯單元分配不同的調試選項。如果您使用make和/或命令行編譯器,那麼您在那裏有類似的選項。因此,根據IDE的不同,您可以將繁重的設置計算放入其自己的庫中,並始終在發佈模式下編譯該庫(或TU),除非您想要自行調試計算本身。

這樣,您可以調試程序的其他部分,但具有完全優化的計算。