2017-03-28 9 views
1

私はブロック呼び出しを持つDelphi 10マルチスレッドアプリケーションを持っています。終了すると、RAMからアンロードされず、Delphiデバッガが停止しないことがあります。私のプログラムはどこで待っていますか?

私のアプリが待っているルーチンをどのように検出する(ツール、方法)?

答えて

7
  1. Pauseボタン(ファイル名を指定して実行、プログラムの一時停止)
  2. ヒット
  3. Threads window(ビュー、デバッグのWindows、スレッドまたはCtrl+Alt+V)を表示し、順番に各スレッドをダブルクリックしてcall stack(ビューを検査デバッグのWindows、コールスタックまたはCtrl+Alt+S
  4. コールスタックであなたのルーチンを探し、コールスタックの最上部にコードを熟読するときあなたがあなたの前に見た証拠を評価しますが、ソースファイル内

Debug DCUs(プロジェクト、オプション...、Delphiコンパイラ、コンパイル、デバッグ.dcusを使用)、およびruntime packagesを無効にして上記の手順を実行することが有益な場合があります(プロジェクト、オプション...、パッケージ、ランタイムパッケージ、ランタイムパッケージとのリンク)

+0

ありがとうございました。これについては知りませんでした。このウィンドウには5つのスレッドが表示されます。そのうちの4つはState = Stopped、Status = Unknown、もう1つはState = Stopped、Status = Steppedです。 – Paul

+1

メインスレッドを見つけ、ブロックしているものを確認してください。そこから取り出してください。どのスレッドがメインスレッドであるかを簡単に知るために、スレッドに名前を付けることができます。 –

+3

[ネームスレッド](http://docwiki.embarcadero.com/RADStudio/en/Naming_a_Thread)ドキュメント – blong

関連する問題