paint-brush
Pdb を使用した Python デバッグの概要@terieyenike
2,569 測定値
2,569 測定値

Pdb を使用した Python デバッグの概要

Teri4m2022/08/24
Read on Terminal Reader
Read this story w/o Javascript

長すぎる; 読むには

Python デバッガー (pdb) は、Python プログラム用の対話型ソース コード デバッガーです。条件付きブレークポイントの設定、ソース コードの行ごとのステップ実行、特定の行とその呼び出しスタックでの変数のチェックなどの追加機能を提供します。この記事では、デバッグ ツール pdb を使用してコードを検査および分析し、テスト中およびユーザーへの出荷前に業界標準に準拠させる方法について説明します。組み込みの pdb は、作業ツールへのインストール中に Python に付属する標準ライブラリの一部です。プログラムをテストするときに使用できる他のいくつかのコマンドを提供します。
featured image - Pdb を使用した Python デバッグの概要
Teri HackerNoon profile picture

アプリケーションを本番環境にデプロイした後、デバッグを後回しにするべきではありません。開発中にできるだけ頻繁に実行する必要があります。これにより、コードのバグを簡単に追跡でき、開発者はコードが実行されない原因となっている問題を修正できます。ほとんどの開発者は、Python の print 関数が開発中に発生するエラーの正確な図を提供しないことを知りません。では、これらのエラーを特定して修正するには、何を使用すればよいでしょうか?答えはデバッグツールです!生産性を向上させ、コーディング プロセスの時間を効率的にするのに役立ちます。


Python デバッガー (pdb) は、Python プログラム用の対話型ソース コード デバッガーです。デバッグ以外にも、条件付きブレークポイントの設定、ソース コードの行ごとのステップ実行、特定の行とその呼び出しスタックでの変数のチェックなどの追加機能が提供されます。


この記事では、デバッグ ツールpdbを使用してコードを検査および分析し、テスト中およびユーザーへの出荷前に業界標準に準拠させる方法について説明します。


前提条件

デバッグのプロセスを理解するには、次のものが必要です。

  • パイソンローカル マシンにインストール
  • Python の知識


Python プログラムを改善する方法

Python コードを正しくデバッグするには、生産性とエラー チェックの向上に役立つ次のヒントに注意する必要があります。

  • Linting: コードを実行する前にコードの問題を検出します。これを機能させる方法は、プログラムを色分けするのに役立つソフトウェアをインストールすることです。これにより、エラーが少なくなり、IDE (VS Code) がエラーを指摘したときにすばやく解決できます。そのようなツールの 1 つがピリント、コーディング時に提案を提供します。
  • 統合開発環境 (IDE) / エディター: Python 固有の IDE などPyCharmまたVS コードPEP8 に基づいてコードを自動フォーマットするのに役立つツールと機能が組み込まれており、エラーが発生したときにコードを強調表示します。
  • エラーの読み取り: Python プログラムのコード エラーの読み取りを学習すると、コンソールでエラーの意味を理解できるため、問題の半分が大幅に解決されます。


 name = 'teri print(name)


コンソール

pdb を使用した Python のデバッグ

このセクションでは、Python デバッガーpdbを使用して Python コードをテストします。コードを実行し、インタラクティブな環境でリアルタイムに発生するエラーを解決します。


組み込みのpdbモジュールは、作業ツールへのインストール時に Python に付属する標準ライブラリの一部です。このツールは、プログラムのテスト時に使用できるその他のコマンドをいくつか提供します。 pdbを使って関数を書いてみましょう。新しいファイルapp.pyまたは任意の名前をコード エディターで作成し、末尾に.py拡張子を付けます。


 import pdb def multiply_number(num1, num2): pdb.set_trace() return num1 * num2 print(multiply_number(5, 10))


上記のコードは次のことを行います。

  • ライブラリpdbをインポートする
  • num1num2の 2 つのパラメーターを持つ関数multiply_numberを定義します。
  • set_traceメソッドを使用してライブラリを呼び出します。これは、プログラムを一時停止し、コンソールでコードを入力してテストできるデバッガモードに入るため、 pdbオブジェクトで役立ちます。
  • return キーワードで引数の結果を取得する
  • 関数を呼び出して数値引数を渡す


コマンドpython3 <name-of-file.py>を使用してこのプログラムを実行すると、デバッガーに入り、コードを実行するためのいくつかのデバッガー コマンドを渡すことができます。を確認してくださいデバッガー コマンドドキュメントを参照して、使用できるコマンドの完全なリストを見つけてください。


次に、コンソールでいくつかのコマンドを試してみましょう。

a または args と入力すると、現在の関数multiply_number で使用されているすべての引数が一覧表示されます。



別のコマンドを試す前に、app.py ファイルのコードを更新して引数の一部として文字列を含め、実行中にプログラムがエラーを出力するようにします。


 # app.py import pdb def multiply_number(num1, num2): pdb.set_trace() return num1 * num2 print(multiply_number(5, 'execute'))


コマンド python3 app.py を使用してプログラムを再実行します。

コンソールにnum1num2を入力すると、multiply_number 関数で渡された引数の結果が出力されます。



試すことができるその他のコマンドには、ドキュメントに記載されている次のステップ、続行などがあります。


最後に、 pdbがコード内のエラーと発生した行番号を特定したら、コードに戻ってエラーを修正し、適切な引数を使用してプログラムを実行することでクリーンアップできます。


注: pdbモジュールは、本番用ではなく、開発中のテスト用です。デプロイする前に削除してください。

結論

この記事では、コードを修正してエラーを特定する際にベスト プラクティスを採用する方法について説明します。メソッドの使用は、コードの品質を向上させるのに役立つ多くの機能を備えているため、print 関数よりも優れています。


もっと詳しく知る