我有一個典型的訪問衝突:如何找出哪些代碼調用已經卸載的模塊?
access violation at 0x4ebb7456: read of address 0x4ebb7456
這發生在是在程序的其餘部分已關停創建的線程。
在發生異常時,主線程正在運行System.FinalizeUnits
。
我發現該地址屬於加載了gdiplus.dll
的內存區域。
的問題消失,如果我加入LoadLibrary('gdiplus.dll')
調用DPR文件,而無需調用返回的句柄FreeLibrary
,而定稿段運行這種方式gdiplus.dll
沒有卸載。
如何找出程序的哪一部分創建導致訪問衝突的線程?
有沒有一種方法可以識別調入釋放的內存空間的代碼?
FastMM和madExcept沒有什麼幫助,madExcept錯誤報告窗口顯示出來,但立即再次關閉,並且不寫入日誌文件。
我可以拆分程序,但它是一個不平凡的應用程序,我寧願使用某種調試技術來解決此問題。
你在項目中的任何地方使用'HtmlHelpViewer'單元嗎? –
我搜索了它並得到了0個結果,但是我看到'HHCTRL.OCX'被加載(可能是由第三方組件,我們沒有完整的源代碼)。 –
我記得在HTML幫助查看器中有一些類似的聲音關機問題。當然,這可能不是你的問題。 –