4

私はデルファイ プログラムを作成しましたが、これはやや複雑になりました。今、どこかに無限ループを導入したという問題に直面していますが、場所が見つかりません。このプログラムはリアルタイム アプリケーションであり、無期限にハングアップします。実行を一時停止して、プログラムが現在どこにあるかを調べる可能性はありますか?

Delphi デバッガーの一時停止ボタンを使用すると、常に cpu-window の という行で中断されます。ntdll.RtlUserThreadStartある種の os メソッドのようですが、それが何を意味するのかわかりません。アセンブラをステップ実行しても、コードのどの行にも返されません。デバッガーが実行中のコード内の任意の行で停止するように指示する可能性はありますか?

4

2 に答える 2

12

デバッガーは、プログラムを一時停止したときに予想されるものとは異なるスレッドのスタック トレースを表示している可能性があります。「スレッドステータス」ウィンドウ(Ctrl + Alt + T)から確認できます。

于 2013-07-10T13:52:59.970 に答える
9

デバッガーで一時停止すると、必ずしも「メイン」スレッドが表示されるとは限りませんが、すべてのスレッドが一時停止されます。スレッド デバッグ ウィンドウを使用して、別のスレッドを選択します。

現在の実行ポイントがコード内にない可能性があります。コール スタック デバッグ ウィンドウを使用して、プログラムがどのように現在の場所に到達したかを確認し、スタック内の関心のあるポイントを選択します。「ステップ アウト」コマンドを使用して、現在の関数を離れて前に戻ることができます。呼び出し側。これは、ソースがないライブラリ関数でデバッガーがプログラムを一時停止する場合に役立ちます。

于 2013-07-10T13:53:08.210 に答える