Pythonでのデバッグのやり方は?使用するデバッガコマンド10選も紹介
Pythonとは
Pythonとは、コードがシンプルだと評価されているプログラミング言語です。C言語よりも学習しやすいと言われているため、初心者におすすめです。
近年では機械学習だけではなく、Webアプリ開発を行うことに使われています。Pythonはインターネット上から無料で手に入れることができるため、プログラミングに興味がある人はすぐに試してみることができます。
Pythonのインストール方法
Pythonのインストール方法は、まずはPython公式サイトのダウンロードページにアクセスするところから始まります。
お使いのPCがWindowsかMacかによってバージョンが異なるため、確認してからインストールするといいでしょう。
その後ダウンロードしたインストーラーを起動し、インストールを進めていきます。インストールが終了した画面には、利用方法を解説したサイトのリンクが表示されます。
デバッグって何?
デバッグとは、スマホやコンピューターのバグを見つけて修復するための作業のことです。
具体的には、アプリケーションを通知なくインストールする時に、ログデータを読み取る場合やデータ間でデータをコピーする時に使われます。
デバッグ作業には5つの決められた基本的な手順がありますので、一般的なバグであればソフトウェアとハードウェアのどちらでも手順に沿って対応することができます。
デバッガーとは
デバッガーとは、コンピュータープログラムのバグを探して修正するプログラムや作業する人です。デバッガーとして活躍する人の多くは、テレビゲーム業界で働いています。
バグの修正は地道な作業ですが、ゲームの開発や品質向上のためになくてはならない存在です。デバッガーはアルバイトも多いですが、プロになれば年収500万円以上を目指すこともできます。
Pythonでデバッグする方法
Pythonでもデバッグする方法があります。変数や関数の返り値の状態を調べる際に役に立ちますので、ぜひ試してみるといいでしょう。
Pythonデバッグは基礎中の基礎と言われていて、初心者でも扱いやすいです。Python付属のIDLEには、デバッガー機能がついていることもあり、やり方をマスターすれば誰でも利用できるようになります。
エラーの対処方法を知れば、プログラミングをもっと楽しめるでしょう。
pdbモジュールを使用
Pythonでデバッグする際は、pdbモジュールを使用します。pdbモジュールとは、Pythonプログラムのための対話型ソースコードデバッガーのことです。
ブレークポイント設定やシングルステップ実行、スタックフレームの点検などをサポートしています。デバッグはクラスpdbと考えられていて、拡張して物事に対応することが可能です。
pdbをインポート
まずは、pdbをインポートしていきましょう。インポートとは、作成したファイルを読み込んで利用する方法のことです。
マイクロソフト社が作ったpdbは、ファイル形式のものに使われます。pdbの使い方もマスターしておくといいでしょう。
set trace()を呼び出す
次は、set trace()を呼び出していきます。デバッグしたいと思う箇所の前にimport pdb; pdb.set_trace()と追加していきましょう。
追加した後は当該箇所で対話型デバッガーが起動してstepコマンド選択し、一行ずつ実行して確認していきます。変数の中身が見たい場合は、pコマンドを使用するといいでしょう。
Pythonでデバッグする場合のデバッガコマンド10選
ここからは、Pythonでデバッグする場合のコマンドを紹介していきます。コマンドを一覧にしてひと通り試してみて、やり方や効果を理解しておくことがおすすめです。
実際にPythonを利用する人は、起動中によく使うコマンドをすぐ確認できるところにメモしておくと便利でしょう。
デバッグに使用するコマンド1:l(ist)
最初に紹介するデバッグに使用するコマンドは、l(ist)です。l(ist)は、現在表示しているファイルのソースコードを示してくれる便利なコマンドです。
行の周りのソースコードをチェックしたいときは、引数により表示範囲を広げることが有効です。l(ist)のコマンドを使って、Pythonでのデバッグ操作をスムーズに行なっていきましょう。
デバッグに使用するコマンド2:n(ext)
デバッグに使用するコマンド2つ目は、n(ext)です。n(ext)を使えば、1行実行できます。関数の中に入ることはありません。
nとCの違いは、nは次のステップを実行ということだけですが、cは次のデバッグポイントまで全コードを実行するという点です。nとCを使いこなして、Pythonでのデバッグ作業をスムーズにしていきましょう。
デバッグに使用するコマンド3:s(tep)
s(tep)は、デバッグで使用することが多いコマンドです。1行実行し、関数の中に入るという特徴があります。
s(tep)を使う際の注意点としては、処理中に関数に入った時に関数内でも1行ずつ停止するということです。s(tep)は関数の実行結果が返ってきて、プログラムが終わってしまう時などに使われることもあります。
デバッグに使用するコマンド4:w(here)
デバッグに使用するコマンド4つ目は、w(here)です。w(here)は、現在の行を教えてくれます。
w(here)は、スタックの底にある一番新しいフレームと一緒にスタックトレースをプリントできます。そして、矢印はカレントフレームを指していますので参考にしてみてください。
さらにほとんどのコマンドのコンテキストを決定できるため、使いこなせるようになりましょう。
デバッグに使用するコマンド5:h(elp)
デバッグに使用するコマンド5つ目は、h(elp)です。h(elp)はデバッグコマンドのヘルプで、コマンドを忘れたときに使うことができます。
実際に使う際は、hかhelpと入力するといいでしょう。コマンドを忘れてしまった時や細かいコマンドを覚えることが難しいと感じる場合は、h(elp)だけでも記憶しておくと便利に使えるでしょう。
デバッグに使用するコマンド6:b(reak)
b(reak)は、現在のファイルの行番号にブレークポイントを付けることが可能なコマンドです。>b(reak)と行番号を組み合わせれば、ファイル名や関数名、条件式も指定可能です。
引数がない場合は、すべてのブレークポイントをリストにしてくれます。注意点としては、第二引数を指定する場合、値は式、評価値を真にする必要があります。
実際に利用する際は、注意してください。
デバッグに使用するコマンド7:q(uit)
q(uit)は、デバッガーを終了したいときに使うコマンドです。実行しているプログラムは中断されますので、中断したいときや検証が終わった時に使用してみてください。
q(uit)を知っておくと、Pythonの問題を無事解決できた時に便利に使えるでしょう。
デバッグに使用するコマンド8:j(ump)
デバッグに使用するコマンド8つ目は、j(ump)です。j(ump)は、次に実行する行を指定する際に使えます。
底のフレーム中でのみ実行できます。前に戻って実行したり、不要な部分をスキップしてその次の処理を実行したりする際に役立つでしょう。
デバッグに使用するコマンド9:run
デバッグに使用するコマンド9つ目は、runです。runは、rだけではr(eturn)と勘違いしてしまうことがあるため、注意してみてください。
runはrestartの別名として使われており、デバッグ中のプログラムを再実行する際に使います。ヒストリー、ブレークポイント、アクションやデバッガーオプションはそのまま継続して使われています。
デバッグに使用するコマンド10:cl(ear)
デバッグに使用するコマンド10個目は、cl(ear)です。cl(ear)は、引数を決めると、その行にある全てのブレークポイントをなくすことができます。
引数がない場合は、すべてのブレークポイントをなくすことができます。特定の行のみにしたい場合は、スペースで区切られたブレークポイントナンバーのリストを指定するといいでしょう。
なお、cというコマンドは他にもあるため、clと記入するといいでしょう。
Pythonでのデバッグ例
Pythonでのデバッグ例を紹介していきます。基本的には、import pdb; pdb.set_trace()をバグがある直前に記載するだけです。
Pythonでのデバッグの実行例は、import pdb;pdb.set_trace()main(sys.argv)EOFです。このように実行すれば、関数の実行前で停止するため、引数の値を確認し、コマンドを入れていきます。
Pythonでのデバッグについて知ろう!
今回紹介したデバッガコマンド以外にもコマンドはありますので、自分の使いやすいコマンドを活用していくといいでしょう。
そしてPythonでのデバッグのやり方をしって、プログラミングを楽しんでいくことをおすすめします。まずは、何度も繰り返しコマンドを使うことからスタートしてみましょう。