Open1

PyCharmデバッグ機能の基本操作まとめ

tech_mwtech_mw

PyCharmは実務で使っていたのですが、デバックモードに関しては「ブレイクポイント + 続行 (Resume Program)」以外あまり使っておらず、実はあまり深く理解できていなかったため、改めて基本から整理し直しています

備忘録としてメモします

PyCharmのデバッグモードとは?

PyCharmは、Python開発に特化した統合開発環境(IDE)であり、直感的で強力なデバッグ機能を備えています。通常の実行では気づきにくいバグやロジックミスも、PyCharmのデバッグモードを使うことで、プログラムを一行ずつ確認しながら動作を追い、変数の値をリアルタイムで確認しながら原因を特定することができます

デバッグモードの主な利点

  • 任意の場所で処理を一時停止(ブレイクポイント)
  • ステップ実行(Step Over / Step Into / Step Out)で流れを追跡
  • その場で式を評価(Evaluate Expression)
  • 標準ライブラリや自作関数の挙動を詳細に確認

1. ステップオーバー (Step Over)

def add(x, y):
    return x + y

a = 10
b = 20
result = add(a, b)  # ブレイクポイントをここに置く
print(result)

操作手順

  1. result = add(a, b) の行にブレイクポイントをセット(左の行番号クリック)
  2. デバッグ実行(虫アイコンまたはShift + F9)を開始
  3. プログラムがブレイクポイントで停止
  4. Step Over ボタン(F8)を押す
    ・ add 関数内部には入らず、一気に次の行 print(result) へ進む

2. ステップイン (Step Into)

def multiply(x, y):
    return x * y

a = 5
b = 4
result = multiply(a, b)  # ブレイクポイントをここに置く
print(result)

操作手順

  1. result = multiply(a, b) にブレイクポイントを置く
  2. デバッグ実行開始(Shift + F9)
  3. 停止後、Step Into ボタン(F7)を押す
    ・ multiply 関数内に入り、1行ずつ実行を追える

3. ステップアウト (Step Out)

def divide(x, y):
    quotient = x / y
    return quotient

def calculate():
    a = 20
    b = 4
    result = divide(a, b)  # ブレイクポイントをここに置く
    print(result)

calculate()

操作手順

  1. result = divide(a, b) にブレイクポイントをここに置く
  2. デバッグ開始で停止
  3. Step Into(F7)で divide 関数内へ入る
  4. 関数内で Step Out(Shift + F8)を押す
    ・ divide の残りを実行して、呼び出し元の calculate に戻る

4. 続行 (Resume Program)

def greet():
    print("こんにちは")  # ブレイクポイント①
    print("お元気ですか?")

def farewell():
    print("さようなら")  # ブブレイクポイント②
    print("また会いましょう")

greet()
farewell()

操作手順

  1. print("こんにちは") に ブレイクポイント① をセット
  2. print("さようなら") に ブレイクポイント② をセット
  3. デバッグ実行(Shift + F9)
  4. greet() の1行目で実行が停止
  5. 「Resume Program(F9)」を押す
  6. farewell() の1行目(ブレイクポイント②)で再度停止
  7. もう一度「Resume」すると、最後まで実行される

5. ステップ・イントゥ・マイ・コード (Step Into My Code)

import re

def greet(name):
    message = f"こんにちは、{name}さん!"
    return message

def main():
    text = "My email is example@example.com"
    result = re.search(r"\w+@\w+\.\w+", text)  # ← ブレイクポイント①(標準ライブラリ)
    message = greet("太郎")                   # ← ブレイクポイント②(自作関数)
    print(result.group())
    print(message)

main()

操作手順

  1. ブレイクポイントを次の2箇所に設定:
    re.search(...) の行(ブレイクポイント①)
    message = greet("太郎")(ブレイクポイント②)
  2. デバッグ実行(Shift + F9)
  3. ブレイクポイント①(re.search) で停止したら:
    ・Step Into(F7) → re モジュールの中へステップインし、正規表現の処理を見ることができる
    ・Step Into My Code(Shift + F7) → re の中には入らず、次の行へ進む(message = greet("太郎") へ)

6. カーソルまで実行(Run to Cursor)

def greet(name):
    print(f"Hello, {name}!")

print("開始")
print("開始後")           # ← ここにブレイクポイント①を設定
greet("Bob")
print("終了前")           # ← ここにカーソルを置く(Run to Cursor)
print("終了")

操作手順

  1. print("開始後") にブレイクポイントをセット
  2. Shift + F9 でデバッグ実行する
  3. ブレイクポイント①で停止したら、次に実行を止めたい行 print("終了前") にカーソルを置く
  4. 上部メニューまたは右クリックから:
    ・Run to Cursor を選択
    ・または ショートカット Option + F9(Mac) / Alt + F9(Windows)
  5. greet("Bob") は実行され、カーソルを置いた print("終了前") の直前で停止する

7. 評価 (Evaluate Expression)

a = 7
b = 3

def power(x, y):
    return x ** y

result = power(a, b)  # ブレイクポイントをここに置く
print(result)

操作手順

  1. result = power(a, b)にブレイクポイントをセット
  2. デバッグ開始で停止
  3. Evaluate Expression(Option + F8)を開く
  4. 例:power(a, b), a + b, b * 2 と入力して実行
  5. その場で計算結果が見られる

デバッグ操作の比較表まとめ

操作名 キー(Mac) 挙動の概要 主な用途・使いどころ
ステップオーバー
(Step Over)
F8 現在の行を実行し、関数呼び出しがあっても中に入らずに次の行へ進む 関数の詳細な中身は気にせずに処理の流れを追いたいとき
ステップイン
(Step Into)
F7 関数の中へ入り、その処理を1行ずつ追跡できる 関数内部の処理内容を詳しく見たいとき、自作関数を追いたいとき
ステップアウト
(Step Out)
Shift + F8 現在の関数内の処理を一気に終わらせて、呼び出し元に戻る 関数内部を軽く確認したあと、全体の流れに戻りたいとき
続行
(Resume Program)
⌘ + Option + R または ▶︎ボタン 次のブレイクポイントまで一気に実行 処理の流れを止めずに、次の観察ポイントまで飛ばしたいとき
ステップ・イントゥ・マイ・コード
(Step Into My Code)
Option + Shift + F7 ライブラリや標準関数には入らず、自作コードの関数だけに入る print()re など標準ライブラリはスキップし、自作関数だけを見たいとき
カーソルまで実行
(Run to Cursor)
Option + F9 または 右クリック→選択 現在位置からカーソルを置いた行まで一気に進める 任意の位置まで早送りしたいが、Resumeでは行き過ぎるときなど
評価
(Evaluate Expression)
Option + F8 現在の変数や式の評価結果をその場で確認できる a + bsome_func() などを実行して値の確認や検証をしたいとき