RPDB-讓PDB(Python調(diào)試工具)支持遠(yuǎn)程調(diào)試功能
軟件已更新,最新請查看:https://code.google.com/p/stonelab/wiki/pdbx
軟件介紹
rpdb擴(kuò)展了pdb,讓pdb支持遠(yuǎn)程調(diào)試功能。
使用了rpdb的python腳本在遠(yuǎn)程啟動,本地通過telnet方式連接上rpdb提供的調(diào)試端口,接下來的操作和本地完全一致。
使用說明
- 下載
- 安裝
- 演示
wget https://stonelab.googlecode.com/files/rpdb-0.1.0.tar.gz
有兩個文件:rpdb.py:擴(kuò)展pdb的類庫; example.py 演示程序
將rpdb.py拷貝到PYTHONPATH即可,或者直接拷貝rpdb.py上內(nèi)容到你的python腳本即可(程序非常小巧,30+代碼行)
pdb = Rpdb() # 類似于pdb=Pdb()
pdb = Rpdb(8787) # 指定遠(yuǎn)程調(diào)試端口號
pdb.set_trace() #設(shè)置斷點
如example.py中程序:#!/usr/bin/python本地終端輸入: telnet xxx.xxx.xxx.xxx 8787
from rpdb import Rpdb
from random import randint
from time import sleep
def add(i, j):
r = i + j
return r
def main():
pdb = Rpdb()
# pdb = Rpdb(9999) # debug port:9999
pdb.set_trace()
while True:
i = randint(1,10)
j = randint(1,10)
r = add(i, j)
print r
sleep(1)
if __name__ == '__main__':
main()telnet 127.0.0.1 8787操作和pdb完全一致。
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
> /Users/stone/Tmp/baidu/rpdb/example.py(15)main()
-> while True:
(Pdb) l
10
11 def main():
12 pdb = Rpdb()
13 # pdb = Rpdb(9999) # debug port:9999
14 pdb.set_trace()
15 -> while True:
16 i = randint(1,10)
17 j = randint(1,10)
18 r = add(i, j)
19 print r
20 sleep(1)
(Pdb) n
> /Users/stone/Tmp/baidu/rpdb/example.py(16)main()
-> i = randint(1,10)
(Pdb) b 19
Breakpoint 1 at /Users/stone/Tmp/baidu/rpdb/example.py:19
(Pdb) c
> /Users/stone/Tmp/baidu/rpdb/example.py(19)main()
-> print r
(Pdb) p r
11
(Pdb) q
Connection closed by foreign host.
PDB常用命令
命令 | 介紹 |
h(elp) command? | 輸入h或者h(yuǎn)elp 列出pdb支持的所有命令, h command? 介紹指定命令 |
w(here) | 列出當(dāng)前調(diào)試所在行,一般會使用 l(ist) |
l(ist) [first[, last]] | 列出源代碼信息 |
s(tep) | 進(jìn)入函數(shù)體 |
n(ext) | 執(zhí)行下一行代碼 |
c(ont(inue)) | 繼續(xù),直到遇到下一個斷點 |
r(eturn) | 執(zhí)行到函數(shù)體結(jié)束那行 |
b(reak) | 設(shè)置斷點,可以是代碼行號,方法名, 還可以加進(jìn)入條件 |
tbreak | 設(shè)置臨時斷點,進(jìn)入一次后,自動消失 |
cl(ear) | 取消斷點 |
disable | 讓斷點失效 |
enable | 讓斷點生效 |
ignore | 忽略斷點n次 |
condition | 給斷點添加條件,符合條件的才進(jìn)入斷點 |
j(ump) lineno | 跳掉指定行 |
a(rgs) | 打印函數(shù)體參數(shù)信息 |
p expression | 打印變量 |
pp expression | 同上,打印得漂亮一些 |
! statement | 執(zhí)行代碼,非常有用,可用來修改變量值 |
q(uit) | 退出調(diào)試(pdb的quit很黃很暴力) |
posted on 2013-03-21 16:19 stone2083 閱讀(9788) 評論(0) 編輯 收藏 所屬分類: python