工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Pythonデバッグマスター:効率的なテクニックとベストプラクティス

Pythonデバッグマスター:効率的なテクニックとベストプラクティス

多くの人にとって、Pythonコードのデバッグはprint文を追加し、出力に基づいて何が起きているか推測することに帰着します。理想的ではありませんが、何らかの理由で人々はPythonデバッガーに触れたがりません。

決して批判しているわけではありません。 Python学習は難しい。プログラミングは難しい。人生は難しい。すでに苦労している時に、さらに新しいことを学ぶのが億劫なのは理解できます。print文をコードに追加するのは……ただ簡単なのです。小さな告白:私も今でも頻繁にやっています。一部の人が言うほど悪いことではありません。

しかし、print文追加と同じくらい簡単な、ある小さなトリックを教えましょう。このトリックは無限のデバッグパワーを与え、必要なら世界征服さえ可能にします。

Pythonデバッガーブレークポイントの設定

コードを適切にデバッグするためにIDEは必要ありません。このトリックは、最もシンプルなエディターでも、Jupyter Notebookでも常に機能します。

トリックの核心は、breakpoint()命令を使っていわゆるブレークポイントを設定することです。通常print文を置く場所ならどこでも、エディターやIDEを問わずコードに挿入できます。

では、何が起きるでしょうか? 試してみましょう! 以下のようなシンプルなプログラムを作成します:

def add_two(x):
    return x + 2

for i in range(1, 10):
    a = add_two(i)
    breakpoint()
    print(a)

これを実行すると(REPL、コマンドライン、IDEのいずれでも)、PythonデバッガーであるPDBにドロップインします。さて、次は?

Pythonデバッガーの使用

上記の小さなプログラムを開始すると、以下のようになります:

$ python3 breakpointing.py
> /home/erik/breakpointing.py(7)<module>()
-> print(a)
(Pdb) _

ここでいくつか確認できます:

Pythonデバッガーは実際、REPLと同様に完全に機能するPythonシェルです。

この時点で現在の環境を検査できます。今、aの値がどうなっているか見てみましょう:

(Pdb) print(a)
3
(Pdb) print(i)
1

printの代わりに、PDB固有のコマンドpも使えます:

(Pdb) p a
3
(Pdb) p i
1

次の行を実行する

次の行のコードを実行したい場合、2つのオプションがあります:

これをより明確にするため:stepは関数呼び出しに喜んで入り、その関数内部でブレークします。対照的に、nextは関数が戻るまで実行し、次の行でブレークします。

他のデバッガーやIDEでは、これらは「ステップイン」(step代わり)と「ステップオーバー」(next代わり)と呼ばれます。

これらを試してみましょう:

$ python3 breakpointing.py
-> print(a)
(Pdb) s
3
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) n
-> breakpoint()
(Pdb) n
-> print(a)
(Pdb) n
4
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) s
--Call--
-> def add_two(x):
(Pdb) s
-> return x + 2
(Pdb) s
--Return--
5
-> return x + 2
(Pdb) s
-> breakpoint()
(Pdb)

ご覧の通り、最初にnでadd_two呼び出しをステップオーバーし、2回目にsで関数内部へステップインしています。

Pythonデバッガーコマンド

自分で試せるコマンドは他にもあります。すべてを列挙せず、最も有用なものを紹介します:

完全なドキュメントは、すべてのコマンドが列挙されているPythonデバッガーページを参照してください。

学びを続ける

この方法は非常に便利ですが、お使いのIDEが提供するデバッガーを深く掘り下げる価値があります。VSCodeユーザーの方は、VSCodeでのPythonコードデバッグ方法についてのチュートリアルを書きました。

Pythonデバッグマスター:効率的なテクニックとベストプラクティス

Python

  1. 保全合理化でプラント効率向上
  2. PCB設計を極める:エンジニア必携のヒントとベストプラクティス
  3. 生産加速:試作が製造プロセスをどう強化するか
  4. 板金部品品質を高める5つの実証済み戦略
  5. 産業機器メンテナンス計画を向上させる3つの実証済み戦略
  6. フォードの拡張コネクテッド・フリート管理で利益を最大化
  7. Python I/Oとモジュールインポート完全マスター: 実践ガイド
  8. Python print()関数の実践ガイド:基本から応用まで
  9. Python文字列操作マスター:replace、join、split、reverse、大文字小文字変換
  10. Python time.sleep():コードに遅延を追加する方法(例付き)
  11. Python print()で改行なし出力:endパラメータとその他のテクニック