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

ブレークポイントは、一度設定すると、 一時的なブレークポイントを除き、明示的に削除するまでプロジェクト内に残ります。
ブレークポイントの種類
PyCharm では次のタイプのブレークポイントが利用できます:
行ブレークポイント: ブレークポイントが設定されたコード行に到達したらプログラムを中断します。 このタイプのブレークポイントは、実行可能なコード行に設定できます。
例外のブレークポイント:
Exceptionまたはそのサブクラスがスローされたときにプログラムを一時停止します。 PyCharm では、Python 例外にブレークポイントを設定できます。 PyCharm Pro、Django、Jinja2、JavaScript、Jupyter の例外ブレークポイントが利用できます。 これらのブレークポイントは例外条件にグローバルに適用され、特定のソースコード参照を必要としません。 スタックトレースとは異なり、例外発生時にアプリケーションを一時停止すると、その周囲のコンテキストやデータが利用可能な状態でその内容を調査できます。
ブレークポイントの設定
行ブレークポイントを設定する
ブレークポイントを設定するコードの実行可能な行でガターをクリックします。 または、行にキャレットを置き、 Ctrl+F8 を押します。

例外ブレークポイントを設定する
Ctrl+Shift+F8 を押すか、メインメニューから を選択します。
ブレークポイント ダイアログで、 Alt+Insert を押すか
をクリックし、 Python 例外ブレークポイント または JavaScript 例外ブレークポイント を選択します。

ブレークポイントの管理
ブレークポイントを除去する
例外以外のブレークポイントの場合: ガターのブレークポイントをクリックします。
全てのブレークポイントについては、メインメニューの Ctrl+Shift+F8 に移動し、ブレークポイントを選択して
削除 をクリックするか、 Delete を押してください。

誤ってブレークポイントを削除してそのパラメーターを失うのを防ぐために、エディターにドラッグするか、マウスの中央ボタンをクリックして、ブレークポイントを削除することを選択できます。 これを行うには、 に移動して エディターにドラッグするか、マウスの中ボタンでクリックする を選択します。 ブレークポイントをクリックすると、それが 有効または無効になります。
ブレークポイントのミュート
ブレークポイントでしばらく停止する必要がない場合は、 ミュートできます。 これにより、デバッガーセッションを移動することなく、通常のプログラム操作を再開できます。 その後、ブレークポイントのミュートを解除して、デバッグを続行できます。
デバッグ ツールウィンドウのツールバーの ブレークポイントのミュート ボタン
をクリックします。

ブレークポイントを使用可能 / 使用不可にする
ブレークポイントを削除すると、その 内部構成は失われます。 パラメーターを失うことなく個々のブレークポイントを一時的にオフにするには、 無効にすることができます。
例外以外のブレークポイントの場合: 右クリックし、必要に応じて 有効 オプションを設定します。 また、 Alt を押しながらブレークポイントをクリックするか、ミドルマウスボタンでクリックしても操作できます。 ミドルマウスボタンの場合、ブレークポイントの除去が 割り当てられていない ことを確認してください。

すべてのブレークポイントの場合: 実行 | ブレークポイントの表示 Ctrl+Shift+F8 をクリックして、リストのブレークポイントをオン / オフにします。
ブレークポイントの移動 / コピー
ブレークポイントを移動するには、それを別の行にドラッグします。
ブレークポイントをコピーするには、 Ctrl を押したまま、ブレークポイントを別の行にドラッグします。 これにより、宛先に同じパラメーターを持つブレークポイントが作成されます。
設定されたすべてのブレークポイントを表示
Bookmarksツールウィンドウですべてのブレークポイントのリストを表示できます。 ブレークポイントは、コード内に配置すると、ツールウィンドウの専用リストに自動的に追加されます。
メインメニューで、 に移動するか、 Alt+2 を押して ブレークポイント リストを展開します。

ブレークポイントのグループ化
たとえば特定の問題に対してブレークポイントを整理したい場合、グループ化できます。
ブレークポイント ダイアログ Ctrl+Shift+F8 で、グループに入れたいブレークポイントを選び、メニューから を選択してください。

ブレークポイントのプロパティを構成する
ブレークポイントのタイプに応じて、特定のニーズに合わせて操作を調整できる追加のプロパティを構成できます。 最も使用されるオプションは、 インテンションを介して利用できます。
ブレークポイントインテンションにアクセスするには、ブレークポイントのある行にキャレットを置き、 Alt+Enter を押します。 このオプションは、基本的なブレークポイントプロパティをすばやく設定する必要がある場合に使用します。

プロパティの完全なリストにアクセスするには、ブレークポイントを右クリックして 詳細 をクリックするか、 Ctrl+Shift+F8 を押します。
インテンションリファレンス
ブレークポイントのプロパティリファレンス
オプション | 説明 | ブレークポイントの種類 |
|---|---|---|
有効 | プロジェクトから削除せずに一時的にブレークポイントを無効にするには、チェックボックスをオフにします。 無効にされたブレークポイントは、デバッグプロセス中にスキップされます。 | すべてのタイプ |
中断 | チェックボックスを選択すると、ブレークポイントに達したときにプログラムの実行が一時停止します。 アプリケーションを一時停止すると、ログ情報を取得したり、特定の時点でプログラムを中断することなく式を計算したりする必要がある場合に役立ちます。 ヒットしたときに依存ブレークポイントをトリガーする マスターブレークポイントを作成する必要がある場合は、そのブレークポイントでプログラムを中断しないように選択します。 中断ポリシーを選択します。
| すべてのタイプ |
条件 | ブレークポイントを打つための条件を指定するために選択します。 条件は Python のブール式です。 この式はブレークポイントが設定されている行で有効でなければならず、ブレークポイントがヒットするたびに評価されます。 評価結果が | Python の行と例外のブレークポイント |
ログ | 次のイベントをコンソールに記録するかどうかを選択します。
| Python の行と例外のブレークポイント |
評価して記録 | ブレークポイントに到達したときに式を評価し、その結果をコンソール出力に表示する場合に選択します。 | Python の行と例外のブレークポイント |
一度ヒットしたら除去する | ヒットした直後にプロジェクトからブレークポイントを削除することを選択します。 | Django 例外、Jinja2 例外、JavaScript 例外ブレークポイント |
ブレークポイントに達するまで無効にする | 現在のブレークポイントをトリガするブレークポイントを選択してください。 そのブレークポイントがヒットするまで、現在のブレークポイントは無効になります。 再度無効にするかヒットした後も有効にしておくかを選択することもできます。 | すべてのタイプ |
未キャッチのみ | キャッチされていない例外でブレークポイントに達したときに通知を受けるように選択します。 | JavaScript 例外ブレークポイント |
有効化ポリシー | ||
終了時 | プロセスがこの例外をスローして終了したときにデバッガーを停止する場合に選択します。 | Python 例外ブレークポイント |
raise 時 | この例外がスローされたときにデバッガーを停止する場合に選択します。 この場合、プロセスは終了しません。 | Python 例外ブレークポイント |
ライブラリファイルを無視する | ライブラリ内でこの例外が発生した場合にデバッガーを停止したくない場合に選択します。 | Python 例外ブレークポイント |
ブレークポイントのステータス
ブレークポイントには、次のステータスがあります:
状況 | 説明 |
|---|---|
検証済み | デバッガーセッションを開始した後、デバッガーはプログラムをブレークポイントで一時停止することが技術的に可能かどうかをチェックします。 はいの場合、デバッガーはブレークポイントを 検証済みとしてマークします。 |
警告 | ブレークポイントでプログラムを一時停止することが技術的に可能ですが、それに関連する問題がある場合、デバッガーはブレークポイントのステータスを 警告に設定します。 これは、たとえば、メソッドの実装の 1 つでプログラムを一時停止することが不可能な場合に発生することがあります。 |
無効 | ブレークポイントでプログラムを一時停止することが技術的に不可能な場合、デバッガーはそれを 無効としてマークします。 これは、その行に実行可能なコードがないためよく発生します。 |
非アクティブ / 依存 | ブレークポイントは、 別のブレークポイントに到達するまで無効になるように構成されている場合、非アクティブ / 依存としてマークされますが、これはまだ発生していません。 |
ミュート | すべてのブレークポイントは ミュートされているため、一時的に非アクティブです。 |
無効 | それはされているため、このブレークポイントが一時的にアクティブで 無効。 |
中断しない | このブレークポイントには 中断ポリシーが設定されているため、ヒットしたときに実行が中断されることはありません。 |
ブレークポイントアイコン
タイプと ステータスに応じて、ブレークポイントは次のアイコンでマークされます。
線 | 例外 | |||
|---|---|---|---|---|
標準 | ||||
無効 | ||||
検証済み | ||||
ミュート | ||||
非アクティブ / 依存 | ||||
ミュート無効 | ||||
中断しない | ||||
確認済みの一時停止なし | ||||
無効 | ||||
生産性のヒント
- デバッグ出力にはブレークポイントを使用
コード内に print 文を挿入する代わりに、 非一時停止 ロギング ブレークポイント(他のデバッガーではウォッチポイントと呼ばれることもあります)を使用してください。 これにより、デバッグログメッセージをより柔軟かつ一元的に管理できます。
- ロギングブレークポイントをすばやく設定
非停止 ログブレークポイントを設定するには、 Shift を押しながらガターをクリックします。 これによりプログラムの実行は一時停止せず、代わりに
Breakpoint reached: threads.py:28のようなメッセージを記録します。 エディターで前方の式を記録したい場合は、 Shift を押しながらクリックする前に選択してください。- ブレークポイントに説明を追加
プロジェクトに多数のブレークポイントがある場合、検索しやすくするために説明を追加できます。 これを行うには、 ブレークポイント ダイアログ Ctrl+Shift+F8 でブレークポイントを右クリックし、メニューから 説明の編集 を選択します。 ブレークポイント名の入力を開始すると、フォーカスが移動します。
- ソースに移動
ブレークポイント ダイアログから選択したブレークポイントが設定されているコード行に移動するには、 F4 を押します。