我有截止日期。我是googling,我代碼閱讀,我neeed幫助...如何縮小堆棧溢出異常?
我的應用程序正在扔EStackOverFlow。它需要通宵測試才能發現錯誤,所以我需要一些好點子,否則需要花費很長時間來追蹤。
我昨天晚上用MAD試了一下,但是沒有看到它,大概是因爲沒有堆棧可以這麼做。我從IDE開始運行,因此我打破了執行過程並查看了Call Stack,但除了詳細信息(我已聯繫作者,但我們之間存在很大的時間差異)之外,它充滿了MAD。
沒有(故意)遞歸遞歸例程。沒有OnChange處理程序(可能會意外更改它們監視的組件,從而遞歸地調用它們自己)。沒有大數據結構(可能作爲參數在堆棧上傳遞)。
我的第一個想法是關閉MAD除外,但我不能再等待12或16個小時發生崩潰。
無人值守,當計時器每隔30秒或每小時過期時,程序正在做一些數據庫訪問,所以我將這些設置爲1秒,希望能夠加速崩潰。嗯,我可以縮小堆棧大小以加快崩潰嗎?如果是這樣,怎麼樣?
我還能做什麼?我已經在Try ...中包裝了我的應用程序主文件,其中創建了表單並運行了應用程序。
是否有某些問題,如消息處理循環,我可以檢查堆棧大小,看看它是否增長「太大」? (如果是這樣,你能否提供細節?)
其他建議?在此先感謝
(頁代碼太大,無法發佈)
您可以在鏈接器選項(或$ MAXSTACKSIZE)(對於可執行文件)中設置最大堆棧大小。 –
+1我已將其設置爲允許的最小值。對於XE2,這是65536.我希望問題現在會更早發生。 – Mawg
查看類中的「數組類型」字段並搜索「While」和「repeat」循環,這是我在過去發現的大多數問題的地方...... – ComputerSaysNo