因此,在最近發生的一些變化之後,我們發現我們最早的應用程序有時會在關機時崩潰。這會以「運行時錯誤216」消息的形式或Windows錯誤報告中的消息顯示應用程序已停止工作。該應用程序已經發出OutputDebugString
-每一回合的消息和AFAICT我們自己的所有代碼正確執行完成。所有的析構函數都被調用,就像所有的終結節和類的析構函數一樣,其中沒有一個引發任何異常。如何調試僅在應用程序關閉時發生的崩潰? (Delphi)
此外,MadExcept和FastMM4的完整調試模式似乎都沒有什麼可抱怨的(儘管這可能是一個錯誤的結論,因爲即使在這些組件自己的最終代碼運行之前崩潰也可能發生)。
那麼,你會怎麼做?你會從哪裏開始?
這個問題應該是更多的一般方法這一類的問題,而不是針對我目前正面臨着這樣的特定實例,我特意留出的細節。隨意問你是否認爲它們可能與調試方法的選擇有關,我將在稍後添加它們。
有一個VCL錯誤,在關機時顯示爲AV。這與'所有者'形式的破壞有關。我通過在'Application.Run'之後明確關閉.dpr文件中的表單來解決這個問題。如果讓'Application'爲你完成關閉,則可能會出現陳舊引用的問題。 – 2011-03-03 13:54:48
@David:這聽起來很有趣。你有一個質量控制編號嗎?但是,除了主窗體之外,我使用各自的父窗體作爲所有者在代碼中創建了所有窗體。你所說的問題是否也適用於這種情況? – 2011-03-03 13:59:54
如果你依賴破壞應用程序來將其他所有東西都關閉,那麼我正在討論的錯誤可能適用。嘗試在您的.dpr文件中放入一個'MainForm.Free'。我會看看QC編號。 – 2011-03-03 14:08:05