4

Delphi IDEのバグに関する別の質問への回答から先に進んで、IDEのマルチスレッドデバッグ機能を改善する方法があるかどうか、またはそうでない場合は、少なくとも時々それがそれほど悪い理由を知っている人はいますか?

プログラム内に複数のスレッドがある場合、F7またはF8を使用してコードをステップ実行すると、非常に長い一時停止が発生するか、IDE全体がロックアップする可能性があります。これは、メソッドまたはプロシージャを終了または入力するときに特に顕著です。デバッガーは、シングルスレッドアプリケーションには常に問題ないようです。

PS。私が使用しているバージョンは2007年です

4

5 に答える 5

3

私の経験からすると、Delphi 2007 で XP を使用するよりも、Vista と Delphi 2009 を使用してマルチスレッド デバッグを行う方がはるかに優れています。

まず、ide が大幅に安定しています。

次に、Delphi 2009 on Vista では、デッドロックが発生している場所をデバッガで表示できます。

Delphi 2007 を使用する必要がある場合は、可能であればシングル スレッドの単体テストでコードをデバッグし、現在テスト済みのコードをメイン プログラムで使用することを強くお勧めします。;)

于 2009-02-05T09:22:22.190 に答える
1

マルチスレッド操作をデバッグするときは、インタラクティブなデバッガーの代わりに、(アプリケーションの実行後に分析する) ログ ファイルを使用することがよくあります。

たとえば、関数「OutputDebugString」を使用します。出力は、Delphi のイベント ログに記録されます。Delphi の外部でプログラムを開始する場合は、SysInternals の DebugViewを使用してログを表示できます。Thread-ID を各出力に追加するように注意してください (GetCurrentThreadID)。ログに書き込む直前にスレッドが切り替わる可能性があることに注意してください。しかし、いくつかのスレッドが相互作用する場所では、おそらく重要なセッション (または別の同期オブジェクト) が発生するため、問題になるはずです。

于 2009-02-06T14:12:18.343 に答える
0

はい、マルチスレッドアプリケーションのデバッグは面倒です。あるスレッドから別のスレッドに絶えずスワップしているからです。

于 2009-02-05T08:41:40.103 に答える
0

考えただけなので試したことのない別のアイデア: あるスレッドのデバッグに興味があり、他のスレッドに邪魔されないようにしたい場合は、いくつかのスレッドを一時的に中断することができるかもしれません。

SysInternals の Process Explorerでは、スレッドを一時停止および再開できます (プロセスのプロパティの [スレッド] タブで)。しかし、私が言ったように、私は今までそれをテストしたことがありません.

于 2009-02-06T14:18:34.477 に答える