我目前正在使用一個相當老的Borland C++應用程序,它使用ActiveX組件來繪製一些圖形。在應用程序與ActiveX comp的多個窗口。可以隨時打開 - 這些可以顯示相同的圖形(不同的縮放因子等)或不同的圖形。如何調試ActiveX控件(OCX),或使其記錄錯誤?
該應用程序用於定位,並且該ActiveX正在繪製並顯示不同單元的位置。
大約每秒10次Borland應用程序獲得了新位置,並找出哪些表單(以及它們的ActiveX)需要了解更新的位置以便繪製它。這已經很長時間了,但是我必須對ActiveX的新版本做一些改變。
大約一年前,我不得不在組件中做一些小的改動,我發現應用程序可能以一種狀態結束,導致組件中出現「索引越界」錯誤。這樣做的結果並不是顯示錯誤或程序終止,而是應用程序開始使用大量內存 - 並且保持非常快的速度。在某個時刻,它停止了,出錯的組件停止顯示任何東西(停止繪製自己)。
現在隨着我所做的最近的更改,我遇到了同樣的問題,其中一個組件似乎出現一個錯誤,該錯誤沒有顯示出來,而是不重繪自己,而且內存使用正在進行-高。在某些PC上,似乎存在訪問衝突 - 這是說錯誤發生在OCX中,但在我開發的個人電腦上,我無法以任何方式獲得此訪問衝突。
此外,我無法確切地發現錯誤發生的時間 - 即是什麼導致了錯誤。我可以連續10次運行相同的設置15分鐘,有時會發生內存使用上升和組件錯誤,其他時間沒有任何反應,並且它在整個持續時間內運行。
因爲它是一個OCX,所以它使用regsvr32進行註冊,因此它不是主應用程序的一部分。因此我不能使用斷點並以這種方式進行調試。
我很確定組件內部發生了一些錯誤,而這些錯誤並未傳遞,所以我看不到它是什麼。
所以有人知道我可以調試嗎?我可以以某種方式使OCX日誌發生任何錯誤,或使其顯示錯誤,或者我能做什麼?
任何幫助將不勝感激 - 一直試圖追查3天的錯誤,現在沒有結果如此。
你可以修改或建立ocx嗎?如果您有ocx的PDB文件,您可以調試它 - 只需將調試器附加到正在運行的進程。 – tenfour
我確實可以修改和構建ocx。我完全不熟悉MFC和OCX,所以我不太清楚如何使用PDB文件並將調試器連接到正在運行的進程? – Knirkegaard