PyCharm 2019.2ヘルプ

パート1: Pythonコードのデバッグ

例の準備

数学クラスの二次式(英語)を覚えていますか?この式は、A、B、C式とも呼ばれ、単純な2次方程式 ax2 + bx + c = 0を解くために使用されます。二次式を手動で解くとすぐに退屈になるため、スクリプトに置き換えましょう。

プロジェクト内のファイルに次のコードをコピーします(このコードは手動で入力することをお勧めします)。

import math class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(result)

ご覧のとおり、ここに main 句があります。それは実行がそれで始まり、変数 a , bcの希望する値を入力することを可能にし、方法 demoを入力することを意味します。

ブレークポイントの配置

ブレークポイントを配置するには、アプリケーションを一時停止する行の横にある左のガターをクリックします。

Adding a breakpoint

詳細はセクションブレークポイントを参照してください。

デバッガセッションの開始

ブレークポイントを追加したため、これでデバッグの準備が整いました。

PyCharmでは、いくつかの方法でデバッガセッションを開始できます。1つ選択してみましょう。左のガターで Run をクリックして、表示されるポップアップメニューでデバッグ 'Solver'コマンドを選択します。

debug Python script

デバッガが起動し、デバッグツールウィンドウのコンソール・タブが表示され、目的の値を入力できます。

Debuggin console

ちなみに、コンソールでは、Pythonプロンプトを表示し、Pythonコマンドを入力することができます。これを行うには、Python consoleをクリックします。

Using a Python prompt in the debug console

デバッグコンソールが短すぎてプロンプトアイコンが表示されない場合は、>>>をクリックします。

その後、デバッガは最初のブレークポイントでプログラムをサスペンドします。これは、ブレークポイントを持つ行がまだ実行されていないことを意味します。線が青くなります。

Debugging stop st the first breakpoint

デバッガタブのステップツールバーで、次のブレークポイントに移動するには、Resumeボタンをクリックします。

インラインデバッグ

エディターでは、コード行の横に灰色のテキストが表示されます。

Inline debugging

どういう意味でしょうか?

これはいわゆるインラインデバッグの結果です。最初の行は、Solver オブジェクトのアドレスと、入力した変数 a , bc の値を示しています。

インラインデバッグをオフにすることができます。

デバッガセッションの途中で実行できることに注意してください。

進めましょう!

ボタン Resumeをクリックしたところで、青いマーカーがブレークポイントの次の行に移動することがわかりました。

ステップツールバーのボタンを使用すると、次の行に移動します。例: Step Overボタンをクリックしてください。インラインデバッグが有効になっているため、変数の値はイタリック体でエディターに表示されます。

Step into

Step intoボタンをクリックすると、a = int(input("a: ")) 行の後にデバッガが parse.pyファイルに入ることがわかります。

Stepping into

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

Expecting next input

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

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

監視

PyCharmでは変数を見ることができます。変数タブのツールバーの The Watch button をクリックし、見たい変数の名前を入力してください。コード補完が利用可能であることに注意してください。

adding a new watch

最初は、変数がまだ定義されていないというエラーが表示されます。

Incorrect adding watch

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

Correst adding watch

セクションデバッグツールウィンドウ: 変数デバッグツールウィンドウ: 監視を参照してください。

式の評価

最後に、いつでも式を評価できます。例:変数の値を確認したい場合は、Evaluate expressionボタンをクリックしてから、開いたダイアログで評価をクリックします。

evaluating expressions

PyCharmは任意の式を評価することができます: 例:

evaluating a math expression

セクション式の評価を参照してください。

また、デバッグコンソールの Python prompt ボタンをクリックして、変数の値を示すコマンドを入力することもできます。例:a変数を変更することができます。この変更は、エディターの対応するコードに表示されます。

Debugging using the prompt console

要約

この簡単なチュートリアルは終わりました - おめでとうございます! それから学んだことを繰り返しましょう:

  • ブレークポイントの知識をリフレッシュし、ブレークポイントを配置する方法を学びました。

  • デバッガセッションを開始する方法と、デバッガコンソールにPythonプロンプトを表示する方法を学びました。

  • インラインデバッグについての知識をリフレッシュしました。

  • ステップ、監視、表現を評価することに手を入れました。

次のステップは、プロフェッショナルエディションのユーザーを対象としています。これはDjangoテンプレートのデバッグです。

最終更新日: 2019年11月6日

関連ページ:

ブレークポイント

ブレークポイントは、特定の時点でプログラムの実行を中断してその動作を調べるためのソースコードマーカーです。一度設定すると、明示的に削除するまでブレークポイントはプロジェクト内に残ります(一時的な行ブレークポイントを除く)。ブレークポイントを含むファイルが外部で変更された場合、たとえば、VCSを介して...

デバッガセッションの開始

デバッグする前にソースコード内のブレークポイントを設定します。必要に応じて、対応する実行/デバッグ設定を作成または変更します。デバッグセッションは、選択された実行/デバッグ設定で開始します。いくつかのデバッグプロセスを同時に起動できることに注意してください。例:Pythonスクリプトのデバッグセッシ...

デバッグツールウィンドウ: コンソール

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

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

このツールウィンドウは、デバッグを開始すると使用可能になります。アプリケーションのデバッグセッションによって生成された出力が表示されます。複数のアプリケーションをデバッグする場合、各アプリケーションの出力は、対応する実行/デバッグ構成の名前を付けた別のタブに表示されます。各アプリケーションには、次の...

インライン値ビュー

インライン値機能を使用すると、デバッグツールウィンドウの変数ペインに切り替えることなく、ソースコードで使用されている変数の値をその使用方法のすぐ隣に表示できるため、デバッグ手順が簡単になります。このオプションを有効にすると、デバッグセッションを起動してプログラムをステップ実行すると、これらの変数が使...

プログラムのステップ・スルー

ブレークポイントに達するか、プログラムが一時停止されると、デバッグツールウィンドウがアクティブになり、プログラムの実行を制御できます。このために、メニューコマンド、またはデバッグツールウィンドウのステップツールバーのアイコンを使用することができます。各ステップアクションは、選択したアクションに応じて...