Pythonデバッグコマンド
4938 ワード
http://docs.python.org/library/pdb.html http://magustest.com/blog/computer/use-pdb-debug-python/.pdbでデバッグするにはいくつかの方法があります。1.コマンドライン起動ターゲットプログラムに-mパラメータを加えて、myscript.pyを呼び出すと断点がプログラムの実行の最初の行の前にpython-m pdb myscript.py 2.Pythonインタラクティブ環境でデバッグを有効にします。プログラムの途中にプログラムを挿入し、一般IDEにブレークポイントを入れてデバッグを起動するという方法です。
h(elp)は、現在のバージョンPdbで利用可能なコマンドを印刷します。コマンドを検索するなら、h[command]を入力してもいいです。例えば、「h l」-listコマンドを参照してください。
l(ist)は、現在実行されるコードブロックを一覧表示することができる。
(Pdb)l 497 pdb.set_trace()498 base_ダタ={}499 new_data={}500 try:501 execfile 503 except:504 logger.writeLog("error!loress ulet loger 5)"
b(reak)は、ブレークポイントを設定します。例えば、「b 77」は、現在のスクリプトの77行にブレークポイントを打つことです。また、関数名をパラメータとして入力することもできます。ブレークポイントは特定の関数の入り口に入ります。bを押すだけで、既存のすべてのブレークポイントが表示されます。
(Pdb)b 504 Breakpoint 4 at/home/jchen/regression/regression LogCM.py:504
condition bpnumber[condition]は、条件のブレークポイントを設定し、次の文は、4番目のブレークポイントに条件「a=3」を追加するです。
(Pdb)condition 4 a==3(Pdb)bNum Type Disp Enb Where 4 breakpoint keep yes at/home/jchen/regression/regression/regression CMP.py:504 stop only if a=3
cl(ear)は、後にパラメータがあれば、指定されたブレークポイントをクリアします。パラメータを持たないと、すべてのブレークポイントをクリアします。
(Pdb)clClearl breaks?y
disable/enable、ブレークポイントを無効/アクティブにする(Pdb)disable 3(Pdb)bNum Type Disp Enb Where 3 breakpoint keep no at/home/jchen/regression/regression/regression LogCMP.py:505
n(ext)は、プログラムを次の行に実行させます。現在のステートメントに関数がある場合、nは呼び出しられた関数の中に入らないです。
s(tep)はnと似ていますが、現在関数が呼び出されていると、sは呼び出された関数に入ります。
c(ont(inue)は、ブレークポイントに出会うまでプログラムを正常に動作させる。
j(ump)は、プログラムを指定された行数にジャンプさせます。
(Pdb)j 497>/home/jchen/regression/regression LogCM.py(497)compreLog()->pdb.set race()
a(rgs)は、現在の関数のパラメータを印刷します。
(Pdb)augger=_base=./base/MM-8137.logunew=./new/MM-8137.logucased=5550001ガトーSteNum=10_cmpMap={bcmpbinarylogs}:“True”、“_bcmpLong”:“Truemp”
pは、最も有用なコマンドの一つで、ある変数を印刷します。
(Pdb)p_newu'///new/MM-8137.log’
!感嘆符の後に語句があります。変数を直接変更することができます。q(uit)は、デバッグを終了します。
コマンドラインでデバッグするのも面白いと思います。メモして共有してください。
if __name__ == "__main__":
a = 1
import pdb
pdb.set_trace()
b = 2
c = a + b
print (c)
そして正常にスクリプトを実行して、pdb.set_に着きました。トレース()では決められます。デバッグのデバッグの表示が見られます。通常のデバッグコマンドです。h(elp)は、現在のバージョンPdbで利用可能なコマンドを印刷します。コマンドを検索するなら、h[command]を入力してもいいです。例えば、「h l」-listコマンドを参照してください。
l(ist)は、現在実行されるコードブロックを一覧表示することができる。
(Pdb)l 497 pdb.set_trace()498 base_ダタ={}499 new_data={}500 try:501 execfile 503 except:504 logger.writeLog("error!loress ulet loger 5)"
b(reak)は、ブレークポイントを設定します。例えば、「b 77」は、現在のスクリプトの77行にブレークポイントを打つことです。また、関数名をパラメータとして入力することもできます。ブレークポイントは特定の関数の入り口に入ります。bを押すだけで、既存のすべてのブレークポイントが表示されます。
(Pdb)b 504 Breakpoint 4 at/home/jchen/regression/regression LogCM.py:504
condition bpnumber[condition]は、条件のブレークポイントを設定し、次の文は、4番目のブレークポイントに条件「a=3」を追加するです。
(Pdb)condition 4 a==3(Pdb)bNum Type Disp Enb Where 4 breakpoint keep yes at/home/jchen/regression/regression/regression CMP.py:504 stop only if a=3
cl(ear)は、後にパラメータがあれば、指定されたブレークポイントをクリアします。パラメータを持たないと、すべてのブレークポイントをクリアします。
(Pdb)clClearl breaks?y
disable/enable、ブレークポイントを無効/アクティブにする(Pdb)disable 3(Pdb)bNum Type Disp Enb Where 3 breakpoint keep no at/home/jchen/regression/regression/regression LogCMP.py:505
n(ext)は、プログラムを次の行に実行させます。現在のステートメントに関数がある場合、nは呼び出しられた関数の中に入らないです。
s(tep)はnと似ていますが、現在関数が呼び出されていると、sは呼び出された関数に入ります。
c(ont(inue)は、ブレークポイントに出会うまでプログラムを正常に動作させる。
j(ump)は、プログラムを指定された行数にジャンプさせます。
(Pdb)j 497>/home/jchen/regression/regression LogCM.py(497)compreLog()->pdb.set race()
a(rgs)は、現在の関数のパラメータを印刷します。
(Pdb)augger=_base=./base/MM-8137.logunew=./new/MM-8137.logucased=5550001ガトーSteNum=10_cmpMap={bcmpbinarylogs}:“True”、“_bcmpLong”:“Truemp”
pは、最も有用なコマンドの一つで、ある変数を印刷します。
(Pdb)p_newu'///new/MM-8137.log’
!感嘆符の後に語句があります。変数を直接変更することができます。q(uit)は、デバッグを終了します。
コマンドラインでデバッグするのも面白いと思います。メモして共有してください。