2011-05-06 96 views
1

我在我的應用程序的/ RTC中啓用了檢測堆棧損壞問題。該應用程序有很多組件(DLL),總LOC約爲40K。它有很多線程。運行時錯誤檢查/ RTC

最初我在執行18000個週期後發生崩潰。但啓用/ RTCs選項後,我可以在100個週期內獲得汽車。崩潰總是發生在稱爲Reciever Thread的線程中。但它在3個或4個位置一直崩潰。發生崩潰時,幾乎所有的局部變量在某些情況下看起來像是損壞的。但是我無法確定根本原因,因爲我無法看到發生崩潰時的任何問題。

我可以做些什麼來縮小堆棧損壞的地步?
代碼有try catch語句,它會阻止識別原因嗎?

請幫我

謝謝!

回答

0

編輯:您是否使用optimisatons:

如果您在使用任何/ RTC 編譯器選項 命令行編譯你的程序,任何編譯優化你的代碼將 靜默失敗 指令。這是因爲 運行時錯誤檢查在 版本(優化)構建中無效。

您應該使用/ RTC進行開發 構建;/RTC不應該用於 零售版本。/RTC不能與 編譯器優化(/ O選項 (優化代碼))一起使用。使用/ RTC構建的程序圖像 將略大於 ,比使用/ Od構建的 圖像稍慢(最多5% 慢於/ Od構建)。

沒有你張貼的任何代碼,我只能建議一般工具。

我在Linux上使用valgrind --tool=helgrind這種事情,但我從你的問題猜測你是在Windows上。

您可能會發現這個問題的答案非常有用:Is there a good Valgrind substitute for Windows?

(如果您發佈的代碼你在哪裏得到的問題或表明您已經使用什麼方法來保護,似乎是已損壞的變量可能有幫助(互斥體之類的......))

+0

不,我沒有使用任何優化。但構建是一個發佈版本。 – Maanu 2011-05-06 14:10:50