PyCharm 2021.1 ヘルプ

ブレークポイント

ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、単純な場合(たとえば、コード行に到達したときにプログラムを一時停止する場合)や、より複雑なロジック(追加の条件に対するチェック、ログメッセージの書き込みなど)を伴う場合があります。

一度設定すると、ブレークポイントは、一時的なブレークポイントを除いて、明示的に削除するまでプロジェクトに残ります。

ブレークポイントの種類

PyCharm では、次のタイプのブレークポイントを使用できます。

  • 行ブレークポイント : ブレークポイントが設定されたコード行に到達したらプログラムを中断します。このタイプのブレークポイントは、実行可能なコード行に設定できます。

  • 例外ブレークポイント : Exception またはそのサブクラスがスローされたときにプログラムを一時停止します。PyCharm では、Python 例外にブレークポイントを設定できます。PyCharm Professional では、Django、Jinja2、JavaScript、Jupyter の例外ブレークポイントを使用できます。これらは例外条件にグローバルに適用され、特定のソースコード参照を必要としません。

ブレークポイントの設定

行ブレークポイントを設定する

  • ブレークポイントを設定するコードの実行可能な行でガターをクリックします。または、行にキャレットを置き、Ctrl+F8 を押します。

    Line breakpoint

例外ブレークポイントを設定する

  1. デバッグツールウィンドウの左側のブレークポイントの表示 View Breakpoints button をクリックするか、Ctrl+Shift+F8 を押します。

  2. ブレークポイントダイアログで、Alt+Insert を押すか the Add button をクリックし、Python 例外ブレークポイントまたは JavaScript 例外ブレークポイントを選択します。

ブレークポイントの管理

ブレークポイントを除去する

  • 例外以外のブレークポイントの場合: ガターのブレークポイントをクリックします。

  • すべてのブレークポイントの場合: メインメニューから実行 | ブレークポイントの表示 Ctrl+Shift+F8 を選択し、ブレークポイントを選択して、除去 Delete をクリックします。

誤ってブレークポイントを削除してそのパラメーターを失うのを防ぐために、エディターにドラッグするか、マウスの中央ボタンをクリックして、ブレークポイントを削除することを選択できます。これを行うには、設定 / 環境設定 | ビルド、実行、デプロイ | デバッガーに移動してエディターにドラッグまたはマウスの中央ボタンをクリックを選択します。ブレークポイントをクリックすると、それが有効または無効になります。

ブレークポイントのミュート

ブレークポイントでしばらく停止する必要がない場合は、ミュートできます。これにより、デバッガーセッションを移動することなく、通常のプログラム操作を再開できます。その後、ブレークポイントのミュートを解除して、デバッグを続行できます。

  • デバッグツールウィンドウのツールバーのブレークポイントのミュートボタン Mute Breakpoints button をクリックします。

ブレークポイントを使用可能 / 使用不可にする

ブレークポイントを削除すると、その内部構成は失われます。パラメーターを失うことなく個々のブレークポイントを一時的にオフにするには、無効にすることができます。

  • 非例外ブレークポイントの場合: 右クリックして、必要に応じて有効オプションを設定します。ブレークポイントの削除が割り当てられていない場合は、マウスの中央ボタンで切り替えることもできます。

  • すべてのブレークポイントの場合: ブレークポイントの表示 Ctrl+Shift+F8 をクリックして、リストのブレークポイントをオン / オフにします。

ブレークポイントの移動 / コピー

  • ブレークポイントを移動するには、それを別の行にドラッグします。

  • ブレークポイントをコピーするには、Ctrl を押したまま、ブレークポイントを別の行にドラッグします。これにより、宛先に同じパラメーターを持つブレークポイントが作成されます。

ブレークポイントのプロパティを構成する

ブレークポイントのタイプに応じて、特定のニーズに合わせて操作を調整できる追加のプロパティを構成できます。最も使用されるオプションは、インテンションを介して利用できます。

  • ブレークポイントインテンションにアクセスするには、ブレークポイントのある行にキャレットを置き、Alt+Enter を押します。このオプションは、基本的なブレークポイントプロパティをすばやく設定する必要がある場合に使用します。

  • プロパティの完全なリストにアクセスするには、ブレークポイントを右クリックしてさらにをクリックするか、Ctrl+Shift+F8 を押します。このオプションは、すべてのブレークポイントの鳥瞰図とその構成の完全な制御に使用します。

インテンションリファレンス

インテンション 説明
ブレークポイントを削除 選択した行のブレークポイントを削除します。
ブレークポイントを無効化 選択した行のブレークポイントを無効にします。
ブレークポイントの編集 最もよく使用されるブレークポイントプロパティを含むダイアログを開きます。その他のプロパティについては、さらにをクリックするか Ctrl+Shift+F8 を押します。

ブレークポイントのプロパティ

オプション 説明 ブレークポイントの種類
使用可能 プロジェクトから削除せずに一時的にブレークポイントを無効にするには、チェックボックスをオフにします。無効にされたブレークポイントは、デバッグプロセス中にスキップされます。 すべてのタイプ
中断

チェックボックスを選択すると、ブレークポイントに達したときにプログラムの実行が一時停止します。アプリケーションを一時停止すると、ログ情報を取得したり、特定の時点でプログラムを中断することなく式を計算したりする必要がある場合に役立ちます。ヒットしたときに依存ブレークポイントをトリガーするマスターブレークポイントを作成する必要がある場合は、そのブレークポイントでプログラムを中断しないように選択します。

中断ポリシーを選択します。

  • すべて: すべてのスレッドが中断されます

  • スレッド : このブレークポイントを含むものだけが一時停止されます。スレッドポリシーをデフォルトのポリシーとして使用する場合は、デフォルトにするボタンをクリックします。

すべてのタイプ
条件

ブレークポイントを打つための条件を指定するために選択します。条件は Python のブール式です。

この式はブレークポイントが設定されている行で有効でなければならず、ブレークポイントがヒットするたびに評価されます。評価結果が True の場合、選択したアクションが実行されます。

次のように複数行の式を入力できます。

if attempted_password == os.environ['USER_PASSWORD']: session['logged_in'] = True else: session['logged_in'] = False error = 'Invalid credentials. Please, try again.' return session['logged_in']

Python の行と例外のブレークポイント
ログ

次のイベントをコンソールに記録するかどうかを選択します。

  • "ブレークポイントヒット" メッセージ : ブレークポイントに達すると、ログメッセージがコンソール出力に表示されます。

  • スタックトレース : ブレークポイントに到達すると、そのスタックトレースがコンソールに出力されます。

    これは、プログラムの実行を中断することなく、どのパスがこの時点までに到達したかをチェックしたい場合に役立ちます。

Python の行と例外のブレークポイント
評価して記録

ブレークポイントに到達したときに式を評価し、その結果をコンソール出力に表示する場合に選択します。

Python の行と例外のブレークポイント
一度ヒットしたら除去する ヒットした直後にプロジェクトからブレークポイントを削除することを選択します。Django 例外、Jinja2 例外、JavaScript 例外ブレークポイント
ブレークポイントに達するまで無効にする 現在のブレークポイントをトリガするブレークポイントを選択してください。そのブレークポイントがヒットするまで、現在のブレークポイントは無効になります。再度無効にするかヒットした後も有効にしておくかを選択することもできます。 すべてのタイプ
未キャッチのみ キャッチされていない例外でブレークポイントに達したときに通知を受けるように選択します。JavaScript 例外ブレークポイント
有効化ポリシー
終了時 プロセスがこの例外をスローして終了したときにデバッガーを停止する場合に選択します。Python 例外ブレークポイント
raise 時 この例外がスローされたときにデバッガーを停止する場合に選択します。この場合、プロセスは終了しません。Python 例外ブレークポイント
ライブラリファイルを無視する ライブラリ内でこの例外が発生した場合にデバッガーを停止したくない場合に選択します。Python 例外ブレークポイント

ブレークポイントのステータス

ブレークポイントには、次のステータスがあります。

状況 説明
検証済み デバッガーセッションを開始した後、デバッガーはプログラムをブレークポイントで一時停止することが技術的に可能かどうかをチェックします。はいの場合、デバッガーはブレークポイントを検証済みとしてマークします。
警告 ブレークポイントでプログラムを一時停止することが技術的に可能ですが、それに関連する問題がある場合、デバッガーは警告を表示します。これは、たとえば、メソッドの実装の 1 つでプログラムを一時停止することが不可能な場合に発生する可能性があります。
無効 ブレークポイントでプログラムを一時停止することが技術的に不可能である場合、デバッガーはプログラムを無効としてマークします。この最も一般的な原因は、行に実行可能コードがないことです。
非アクティブ / 依存 ブレークポイントは、別のブレークポイントにヒットするまで無効になるように構成されている場合、非アクティブ / 依存としてマークされますが、これはまだ発生していません。
ミュート すべてのブレークポイントはミュートされているため、一時的に非アクティブです。
使用不可 それはされているため、このブレークポイントが一時的にアクティブで無効
中断しない このブレークポイントには中断ポリシーが設定されているため、ヒットしたときに実行が中断されることはありません。

ブレークポイントアイコン

タイプステータスに応じて、ブレークポイントは次のアイコンでマークされます。

メソッド 例外
標準 line breakpoint method breakpoint exception breakpoint
使用不可 disabled line breakpoint disabled method breakpoint disabled exception breakpoint
検証済み verified line breakpoint verified method breakpoint
ミュート muted line breakpoint muted method breakpoint
非アクティブ / 依存 inactive/dependent line breakpoint inactive/dependent method breakpoint
ミュート無効 muted disabled line breakpoint muted disabled method breakpoint
中断しない non-suspending line breakpoint non-suspending method breakpoint
確認済みの一時停止なし verified non-suspending line breakpoint verified non-suspending method breakpoint
無効 invalid breakpoint

生産性のヒント

「printf」デバッグにブレークポイントを使用する
コードに出力ステートメントを挿入する代わりに、non-suspending ログブレークポイント(他のデバッガーではウォッチポイントと呼ばれることもあります)を使用します。これにより、デバッグログメッセージを処理する、より柔軟で集中化された方法が提供されます。
ロギングブレークポイントをより迅速に設定する
non-suspending ロギングブレークポイントを設定するには、Shift を押しながらガターをクリックします。これはプログラムの実行を中断せず、代わりに Breakpoint reached: threads.py:28 のようなメッセージを記録します。エディターの前にある式をログに記録する場合は、Shift を押しながらガターをクリックする前に、式を選択します。
ブレークポイントの説明を追加する
プロジェクトに多数のブレークポイントがある場合、検索を容易にするためにブレークポイントに説明を追加できます。これを行うには、ブレークポイントダイアログ Ctrl+Shift+F8 のブレークポイントを右クリックし、メニューから説明の編集を選択します。これで、ブレークポイント名の入力を開始すると、フォーカスが取得されます。
ブレークポイントのグループ化
たとえば、特定の問題のブレークポイントをマークアウトする必要がある場合、ブレークポイントをグループに編成できます。これを行うには、ブレークポイントダイアログ Ctrl+Shift+F8 で、グループに配置するブレークポイントを選択し、メニューからグループに移動を選択します。
ラムダ式とメソッド参照
JVM の設計により、ラムダ式とは異なり、メソッド参照はスタックトレースに意味のある情報を提供しません。さらに、メソッド参照にブレークポイントを設定することはできません。メソッド参照が重要な場合にトレーサビリティを低下させる場合は、代わりにラムダの使用を検討してください。
致命的なエラーの原因を診断する
例外ブレークポイントは Throwable で機能するため、Error のサブクラスがスローされたときに使用してプログラムを中断することもできます。これは、OutOfMemoryErrorStackOverflowError などのエラーの原因を調査できます。それらに例外ブレークポイントを設定すると、クラッシュする前にプログラムで何が起こったのかを調べることができます。
並行性の問題についてプログラムをテストする
マルチスレッドプログラムが同時実行性に関して堅牢であるかどうかを確認する良い方法は、ヒット時に 1 つのスレッドのみを一時停止するブレークポイントを使用することです。単一のスレッドを停止すると、アプリケーションの設計上の問題が明らかになる場合がありますが、それ以外の場合は明らかではありません。

関連ページ:

デバッグ | PyCharm

デバッグセッション中に、デバッガーをアタッチしてプログラムを起動します。デバッガーの目的は、プログラムの実行を妨害し、内部で何が起こっているかに関する情報を提供することです。これにより、プログラムのバグを検出して修正するプロセスが容易になります。デバッグオプションを構成するで一般的なデバッグプロパティと動作を構成します。デバッグが初めての場合は、すぐに使用できる構成が機能します。各デバッガー機能に関するトピックは、参照を提供し、該当する場合は関連する設定を説明します。上級ユーザーで、特定のプロパ...

デバッガーセッションを開始する | PyCharm

デバッガーセッションの開始は、プログラムを通常モードで実行するのと非常によく似ています。デバッガーはバックグラウンドで接続されているため、デバッガーセッションを開始するために特別な設定を行う必要はありません。PyCharm からプログラムを実行できる場合は、同じ構成を使用してプログラムをデバッグすることもできます。プログラムをデバッグするたびに、デバッガーセッションは実行 / デバッグ構成に基づいています。PyCharm を構成して、プログラムを起動する前に任意のパラメーターを使用し、任意のアク...