他の言語で読む: English Español 中文
一般的なデバッグ シナリオでは、ブレークポイントを設定して、プログラムをいつ一時停止するかをデバッガーに指示します。ブレークポイントは通常、さらなる調査の開始点をマークする瞬間に対応します。
ブレークポイントをどこに設定するかを決めるのは難しい場合があります。正確な行が不明瞭な場合や、特定のコードではなく時間に基づいてプログラムを一時停止したい場合があります。
この記事では、IntelliJ IDEA の プログラムの一時停止 機能について説明します。これは、上記のシナリオを含むいくつかのシナリオで非常に強力な、あまり知られていないデバッグ手法です。その使用例と制限について説明し、その秘密を段階的に発見していきます。
一時停止プログラム は、任意の時点でアプリケーションを任意に一時停止できる IntelliJ IDEA デバッガーの機能です。さらに、アプリケーション コードを知る必要さえありません。実際、無視しても問題ありません!
プログラムを一時停止するには、デバッガー ツールバーの プログラムの一時停止 をクリックします。その後、プログラムは実行の途中で停止します。
一見すると、一時停止されたプログラムは、ブレークポイントで一時停止されたプログラムとまったく同じように見えるかもしれません。ただし、これはある程度までは真実です。
一時停止プログラムは、一種のスレッドダンププラスと考えるのが正しいでしょう。通常どおり、変数とスレッドの両方を検査できます。ただし、式の評価 などの一部の高度な機能は動作しません。
プログラムの一時停止を使用する方法は無数にあります。多くの場合、従来のブレークポイントと同じ意味で使用できます。ただし、プログラムの一時停止 を使用する方がより適切なアプローチであるシナリオもあります。それらのいくつかを考えてみましょう。
ユーザー インターフェイス (UI) のフリーズが発生した場合、通常は UI スレッドがブロックされていることが原因です。
この場合、Pause Program を使用すると、アプリケーションが応答しないときに一時停止して、UI スレッドの呼び出しスタックを調べることができるため便利です。通常、問題を診断するにはこれで十分です。
前述したように、プログラムの一時停止 を使用すると、ソース コードが見つからない可能性があるため、単に無視することができます。このシナリオはあまり一般的ではありませんが、このシナリオに遭遇した場合、ブレークポイントは役に立ちません。
ここで 一時停止プログラム の出番です!
デッドロックやライブロックなどの同期の問題が疑われる場合は、プログラムの一時停止を使用すると、問題の原因となっている正確なスレッドとロックを見つけることができます。
この場合は、プログラムを一時停止してスレッド リストを調べてください。どのスレッドがブロックされているかが表示されます。実行ポイントに移動すると、ロックされている重要なセクションも表示されます。この情報は、解決策に導くのに役立ちます。
前に述べたように、プログラムの一時停止 により、デバッガーの高度な機能の一部へのアクセスが制限されます。アプリケーションの一時停止中に特定の機能を使用しようとすると、一時停止アクションの後にメソッドを評価できませんというエラー メッセージが表示されたことがあります。
ただし、この制限を回避する近道があります。
アプリケーションを一時停止した後、アクションを段階的に実行し続けます。 ステップイン または ステップオーバー で十分です。これが完了すると、ブレークポイントを使用してアプリケーションを一時停止する場合と同様に、通常のデバッグ セッションが開始されます。すべての高度な機能がロック解除されました!
今日はここまでです!これらのヒントやテクニックがお役に立てば幸いです。
デバッグとプロファイリングに関連する他の記事に興味がある場合は、私の他の記事をいくつかチェックしてください:
Java でのデバッグに関して特に取り上げてほしいことがあれば、遠慮なくご連絡ください。あなたの意見は、あなたにとって最も興味深いコンテンツに優先順位を付けて公開するのに役立ちます。
以上がブレークポイントを使用しないデバッグの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。