PyCharm 2020.2ヘルプ

ステップ 2. 最初のPythonアプリケーションをデバッグする

問題の原因を突き止める

前のチュートリアルCarスクリプトを作成して実行したことを覚えていますか?それをもう少し遊んで、average_speed 関数を次のように変更してみましょう。

def average_speed(self): return self.odometer / self.time

スクリプトを始めるときに何が起こるのかを見て、平均スピードを調べてみましょう。

Error messages

おっと... PyCharmはランタイムエラーを報告します: ZeroDivisionError

コードをもう少し掘り下げて、何が問題になっているのかを調べてみましょう。PyCharmデバッガーを使用して、コードで何が起こっているかを正確に確認できます。デバッグを開始するには、まずいくつかのブレークポイントを設定する必要があります。ブレークポイントを作成するには、ガターをクリックする

Adding breakpoints

次に、main 句の横にあるガターの Run icon アイコンをクリックし、デバッグ 'Car'を選択します。PyCharmはデバッグセッションを開始し、デバッグツールウィンドウを表示します。

Debug tool window

Resume icon ボタンをクリックしてスクリプトの実行を続行し、コンソール・タブSを入力します。

Debug tool window: Console tab

スクリプトの実行を再開するには、Resume icon ボタンをクリックします。さあ、見てください! 例外はここにあります。別のブレークポイントも表示されました。デフォルトでは、PyCharmはあなたのコードで捕捉されなかった例外を停止し、稲妻のブレークポイントのアイコンを表示します。

Exception breakpoint

デバッガーはエラーメッセージも表示します。問題が見つかりました。デバッガで、値 self.time がゼロに等しいことも確認できます。

周囲のコード

再度同じ問題が発生するのを避けるために、if ステートメントを追加して、時刻がゼロに等しいかどうかを確認してみましょう。これを行うには、メソッド average_speed でステートメント return self.odometer / self.time を選択し、次に Ctrl+Alt+Tコード | 囲む)を押します。

Surround code

PyCharmはスタブ if を作成し、適切な内容で埋め尽くします。

編集後、次のようになります:

Results of the surrounded code

デバッガがあなたのコードが何をしているかを見ることができるかどうかを見てみましょう。

詳細なデバッグ

デバッグツールウィンドウには、フレーム変数ウォッチの専用ペインと、すべての入力および出力情報が表示されるコンソールが表示されます。コンソールを常に表示したい場合は、PyCharmウィンドウの端のいずれかにコンソールをドラッグできます。

ステップ

コードが行ごとに何をしているかを見たい場合は、すべての行にブレークポイントを置く必要はなく、コードをステップ実行することができます。

プログラム例をステップ実行するのがどのように見えるかを見てみましょう。Resume icon ボタンをクリックし、車の平均速度(タイプ 'S' )を確認するためにコンソールに行ってください。

ステップツールバーボタンを使用して、次に停止する行を選択できます。

Stepping toolbar

例:ステップ・オーバーボタン Step over icon をクリックすると、青いマーカーが次のコード行に移動するのがわかります。

Stepping over during the debugging

ステップ・インボタン Step into iconをクリックすると、行 action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper() の後にデバッガーがファイルparse.pyに入ることがわかります。

Stepping into during the debugging

ただし、Step over iconを引き続き使用すると、アプリケーションが次のループに渡されることがわかります。

Debugging: passing to the next loop

独自のコードに集中したい場合は、自分のコードにステップ・インボタン Step into my code を使用してください。ライブラリクラスにステップインすることは避けられます。

詳細については、ステップツールバーおよびプログラムのステップ・スルーのセクションを参照してください。

監視

PyCharmでは、任意の変数を見ることができます。監視式タブのツールバーで The Add button をクリックして、見たい変数の名前を入力します。my_car.time にします。コード補完は次の場所にあります。

Watch completion

最初は、時刻がnilに等しいことがわかります。つまり、変数がまだ定義されていないことを意味します。

Watch error

ただし、プログラムの実行が変数を定義するスコープまで続くと、ウォッチは次のビューを取得します。

Watched variable gets a value

詳細については、ウォッチを追加、編集、削除するセクションを参照してください。

インラインデバッグ

コードの実行内容を簡単に確認できる別のPyCharm機能、インラインデバッガーに気づいたかもしれません。ブレークポイントを押すとすぐに、PyCharmは多くの変数の値をエディターに表示します。

Inline debugging

このインラインデバッグ機能はデフォルトで有効になっています。インラインデバッグ値が表示されない場合は、デバッグツールウィンドウの設定アイコン Settings を使用して有効になっていることを確認してください。

Show values inline

式の評価

最後に、任意の式をいつでも評価できます。例:変数の値を表示するには、Evaluate expression button ボタンをクリックします。

次に開いたダイアログで、評価をクリックします。

Evaluate dialog

実際には、同じことを監視で見ることができます。評価式では、監視ではできないことを行うことができます。物事を変えることができます。

例:オドメーターの希望の値、たとえば50を入力してから、スクリプトをステップ実行し続けると、次のように表示されます。

Evaluate expression: target value

詳細については、式の評価のセクションを参照してください。

このモードでは、いくつかのコマンドと式を入力できます。例:変数値を変更できます。

changing variables during debugging in the Python console

要約

それをやった! おめでとう! PyCharmの助けを借りてやったことを繰り返しましょう:

  • 問題の原因を見つけた

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

  • プログラムを一歩進んだ

  • 監視を作成

  • 表現を評価しました

最終更新日: 2020年6月10日

関連ページ:

ステップ 1. 最初のPythonプロジェクトを作成して実行する-ヘルプ| PyCharm

始める前に:次の前提条件が満たされていることを確認してください。PyCharmCommunityまたはProfessionalを使用しています。Python自体をインストールしました。macOSまたはLinuxを使用している場合、コンピューターにはすでにPythonがインストールされています。pyt...

ブレークポイント

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

デバッグツールウィンドウ

このツールウィンドウは、デバッグを開始すると使用可能になります。It displays the output generated by the debugging session for your application. If you are debugging multiple実行/デバッグ構成...

コンソール・タブ

このタブはでマークされ、出力およびエラー・ストリーム・メッセージを表示します。コンソールツールバー:スタックトレースのアップ/ダウン)このボタンをクリックすると、スタックトレース内を上下に移動し、カーソルがソースコード内の対応する場所にジャンプします。ソフトラップを使用このボタンをクリックすると、出...

フレーム

フレームペインでは、アプリケーションのスレッドのリストにアクセスできます。スレッドを調べるには、ペイン上部のリストからスレッドを選択します。スレッドのステータスとタイプは、スレッド名の横にある特別なアイコンとテキストのメモで示されます。スレッドごとに、スタックフレームを表示し、フレームを調べ、フレー...

変数

このトピックの内容:変数ペインでは、アプリケーションのオブジェクトに格納されている値を調べることができます。フレームペインでスタックフレームが選択されると、変数ペインはそのスコープ内のすべてのデータ(メソッドパラメータ、ローカルおよびインスタンス変数)を表示します。このペインでは、オブジェクトのラベ...