私は現在、ActiveXコンポーネントを使用してグラフィックを描画しているかなり古いBorlandC++アプリケーションを使用しています。アプリケーションでは、ActiveXcompを使用した複数のウィンドウ。いつでも開くことができます-これらは同じグラフィック(異なるズーム率など)または異なるグラフィックを表示できます。
アプリケーションはポジショニング用であり、ActiveXはさまざまなユニットの位置を描画および表示しています。
1秒間に約10回、Borlandアプリケーションが新しい位置を取得し、それを描画するために更新された位置について知る必要があるフォーム(およびそのActiveX)を見つけます。これは長い間うまくいっていますが、製品の新しいバージョンのためにActiveXでかなりの変更を加える必要がありました。
約1年前、コンポーネントにもいくつかの小さな変更を加える必要がありましたが、アプリケーションが状態で終了し、コンポーネントで「範囲外のインデックス」エラーが発生する可能性があることがわかりました。この結果、エラーが表示されたり、プログラムが終了したりすることはありませんでしたが、代わりにアプリケーションが大量のメモリを使用し始め、非常に高速に起動し続けました。ある時点で停止し、エラーが発生したコンポーネントは単に何かを表示しなくなりました(描画自体を停止しました)。
最近行った変更で、コンポーネントの1つにエラーが発生し、表示されず、代わりにそれ自体が再描画されず、メモリ使用量が非常に高くなるという同じ問題が発生します。一部のPCでは、アクセス違反がスローされているように見えます。これは、エラーがOCXで発生したことを示していますが、私が開発したPCでは、このアクセス違反を取得できません。
また、エラーがいつ発生したか、つまりエラーの原因を正確に追跡することもできません。同じセットアップを15分間連続して10回実行できます。メモリ使用量が増えてコンポーネントのバグが発生する場合もあれば、何も起こらず、全期間にわたって正常に実行される場合もあります。
OCXであるため、zippy32を使用して登録されているため、コード的にはメインアプリケーションの一部ではありません。したがって、ブレークポイントを使用してそのようにデバッグすることはできません。
コンポーネント内で何らかのエラーが発生していると確信していますが、これは渡されないため、それが何であるかがわかりません。
だから誰かが私がこれをデバッグする方法を知っていますか?どういうわけか、発生したエラーをOCXにログに記録させたり、エラーを表示させたりできますか、それとも何ができますか?
どんな助けでも大歓迎です-今まで3日間エラーを追跡しようとしましたが、結果はありませんでした。