9.1 デバッガの起動
PyCharmを使ってデバッグプロセスを学んでいくよ。それが理にかなってて、なおかつ楽しいからね。 今からそのことを納得してもらうよ。
PyCharmではあなたのプログラムを2つのモードで実行できるよ:
| プログラム実行モード | パネル上のアイコン | ショートカットキー |
|---|---|---|
| 通常実行 | |
Shift+F10 |
| デバッグモードでの実行 | |
Shift+F9 |
普通のモードにはもう慣れてるだろうね:プログラムは起動して、実行して、終了する。でもデバッグモードには新しい発見がたくさんあるよ。
デバッグモード
デバッグモードではプログラムをステップバイステップで実行できるんだ。正確には、1行ずつ: 一行一行実行できるよ。そして、プログラムの各ステップで変数の値を確認することができるんだ(各行の実行後に)。さらには、変数の値を変更することもできるよ!
デバッグの基本を身につけるには、以下の3つを学ぶ必要があるよ:
- ブレークポイント
- ステップ実行
- 変数の値の確認
9.2 ブレークポイント (Break Points)
IDEを使うとコードに特別なマーカーを配置できるよ — ブレークポイント (break point)。デバッグモードでプログラムを実行するとき、プログラムがbreak pointとしてマークされた行に到達するたびに一時停止するんだ。
break pointを特定の行に設定するには、PyCharmでその行の左側をクリックするだけ。例:
これによってその行はブレークポイント(break point)としてマークされ、PyCharmがその行を赤くハイライトするんだ:
もう一度その行の左側をクリックすると、設定されたbreak pointが解除されるよ。
また、break pointを現在の行に設置するにはショートカットキーCtrl+F8を使用することもできるよ。もう一度Ctrl+F8を押すと、break pointが削除されるんだ。
9.3 デバッグモードでのプログラムの実行
プログラムに少なくとも1つのブレークポイントがあるなら、デバッグモードでプログラムを実行できるよ(Shift+F9または「バグのアイコン」)。
デバッグモードで開始すると、プログラムは通常通りに実行される。でも、break pointとしてマークされた行に達すると一時停止するんだ。例:
スクリーンショットの上部では2つのブレークポイントがあるプログラムコードが見えるよ。プログラムは行2 — 青い線でマークされたところで止まってるよ。行2はまだ実行されていない: コンソールにはまだ何も表示されていないよ。
画面の下部では、デバッグモードのパネルが見えるよ: Thread & variablesパネルやConsoleパネル(画面出力)、デバッグモード用の一連のボタンだ。
プログラムを一時停止から解除するには(実行を再開するには)、左下のパネルにあるResume Programボタンを押せばいいよ(またはF9キーを押してもいい)。
そのボタンを押すと(またはF9を押すと)、プログラムは次のブレークポイントに達するか、終了するまで実行を続けるよ。このボタンを押した後に表示されるものを見てみよう:
プログラムは2番目のブレークポイントで停止して、コンソールに"Hello"と"and"という言葉が表示された — これは画面に表示される3つの行のうち2つだけが実行されたことを示しているんだ。
9.4 ステップ実行
プログラムがデバッグモードで実行されている場合、ステップバイステップで実行することもできるよ: ワンステップ — ワンライン。ステップ実行のためには2つのショートカットキーがある: F7とF8だ。それぞれが現在のコード行を実行する。でもまず、break pointを使ってプログラムを停止する必要があるよ。
プログラムを1行ずつ実行したい場合は、最初からbreak pointを設定する必要があるよ — プログラムの最初のコード行に。そして、デバッグモードでプログラムを起動するんだ。
プログラムが停止したら、1行ずつの実行を開始できるよ。F8キーを1回押すごとに1行進むんだ。
これがプログラムが停止した後にF8キーを1回押した後の様子だよ:
最初の行 — print("Hello") — が既に実行されて、現在の行は2番目の行だよ。スクリーンショットの下部では"Hello"という言葉がすでに画面に表示されているのが見えるね。
9.5 関数内へのステップ実行
プログラムに独自の関数があって、それをステップ実行しつつ関数の内部に入りたいときは、「関数内に入るため」のキーとしてF7を使うんだ。F8ではなくね。
例えば、プログラムをステップ実行していて今5行目で停止しているとしよう。F8を押すと、PyCharmはそのまま5行目を実行して6行目に進むんだ。
でもF7を押すと、PyCharmは関数hello()をステップ実行するよ:
すごく簡単だね。メソッドの中で何が起こっているのか、あまり重要でなければF8を押し、重要だと思ったらF7を押して、その全コードをステップ実行しよう。
GO TO FULL VERSION