9.1 デバッガコマンド

デバッガは次のコマンドを理解します。 ほとんどのコマンドは1文字ないしは2文字に省略されています。 例えば ``h(elp)''は``h'' または ``help''を意味し helpコマンドを入力するために使えます。(しかし``he''、 ``hel''、``H''、``Help、``HELP''はダメです)
コマンドへの引き数は空白(タブまたはスペース)で区切られていなければなりません。 オプションの引き数はコマンドシンタックス上はカギ括弧[]で囲まれています。カギ括弧をタイプしてはいけません。 コマンドシンタックスでの選択肢は直立したバー(``|'')によって分けられています。

ブランクラインを入力すると、最後に入力されたコマンドをくり返します。 例外
もし、最後のコマンドが``list''コマンドであった場合は次の11行がリストされます。

デバッガが認識できないコマンドはPythonのステートメントであると判断され、 デバッグされているプログラムのコンテキスト(文脈)で実行されます。 Pythonのステートメントは感嘆符!を接頭語として指定することもできます。 これは、デバッグされているプログラムを点検する強力な方法です。 つまり、変数を変えることやあるいは関数を呼び出すことも可能です。 このようなステートメントで例外が発生した場合は例外名が表示されますが、デバッガの状態は変化しません。

h(elp) [command]

引き数なしで、利用可能なコマンドのリストを表示します。 コマンドを引き数とした場合は、そのコマンドについてのヘルプを表示します。 「help pdb」はすべてのドキュメントファイルを表示します。 もし、環境変数「PAGER」が定義されていたら そのファイルはそのコマンドを通してパイプ処理されます。 コマンド引き数は識別子でなければならないので、 「help exec」はヘルプを表示するために感嘆符!をつけて入力されなければなりません。

w(here)

再下層から最も近いフレームで、スタックトレースを表示します。 矢印がカレントフレームを示しています。 そしてそれがほとんどのコマンドの文脈を決定します。

d(own)

スタックトレース中のカレントフレームを1レベル下(古いフレーム)にさげます。

u(p)

スタックトレース中のカレントフレームを1レベル上(新しいフレーム)にあげます。

b(reak) [lineno|function [, 'condition']]]

lineno引き数で、現在のファイルのそのラインNoにブレークポイントを設定します。 function引き数で、そのファンクションの入り口にブレークポイントを設定します。 引き数なしの場合は、すべてのブレークポイントをリストします。 もし、2番目の引き数があれば、それはブレークポイントで停止する前に 真と評価される式を指定する(ストリングクオートに囲まれた)文字列でなければなりません。

cl(ear) [lineno]

lineno引き数で、現在のファイルでのそのラインNoのブレークポイント設定を解除します。引き数なしの場合は、すべてのブレークポイントを解除(まず確認をしますが)します。

s(tep)

現在の行を実行し、最初の停止可能なところ(呼び出された関数あるいは現在の関数の次の行)で停止します。

n(ext)

現在の関数の次の行に到達するか、あるいは関数がリターンするまで実行を続けます。 (nextStepの間の違いは、Stepの場合は呼び出された関数内で停止します。一方nextは現在の関数の次行に行く場合だけ停止し、 それ以外は全速で呼び出された関数を実行します。)

r(eturn)

現在の関数がリターンするまで実行を続けます。

c(ont(inue))

実行を続け、ブレークポイントを通過する時のみストップします。

l(ist) [first[, last]]

現在のファイルのソースコードをリストアップします。 引き数なしの場合は、現在の行のまわり11行をリストアップするか、または、前のリストの続き11行をリストアップします。 引き数が1つの場合は、現在の行のまわり11行をリストアップします。 引き数が2つの場合は、与えられた範囲でリストアップを行います。 もし、2つめの引き数が1つめの数値より小さい場合は、それは行数と判断されます。

a(rgs)

現在の関数の引き数のリストを表示します。

p expression

カレントのコンテキストでその式を評価し、その値をプリントします。 (注:printを同じく使用することができます。しかし、これはデバッガコマンドではありません。 これはパイソンのprint文を実行する事になります。)

[!]statement

現在のスタックフレームのコンテキスト中でstatement(1行)を実行します。 感嘆符はステートメントの最初の文字がデバッガコマンドと同一でなければ 省くことができます。 グローバル変数をセットしたい場合、同じ行にglobalを先頭につけて代入コマンドを記述できます。 例えば、

(Pdb) global list_options; list_options = ['-l']
(Pdb)

q(uit)

デバッガを終了します。 実行されていたプログラムも停止します。

guido@python.org