軟件已更新,最新請查看:https://code.google.com/p/stonelab/wiki/pdbx
軟件介紹
rpdb擴展了pdb,讓pdb支持遠程調試功能。
使用了rpdb的python腳本在遠程啟動,本地通過telnet方式連接上rpdb提供的調試端口,接下來的操作和本地完全一致。
使用說明
pdb = Rpdb() # 類似于pdb=Pdb()
pdb = Rpdb(8787) # 指定遠程調試端口號
pdb.set_trace() #設置斷點
如example.py中程序:#!/usr/bin/python
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 xxx.xxx.xxx.xxx 8787telnet 127.0.0.1 8787
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完全一致。
PDB常用命令
命令 | 介紹 |
h(elp) command? | 輸入h或者help 列出pdb支持的所有命令, h command? 介紹指定命令 |
w(here) | 列出當前調試所在行,一般會使用 l(ist) |
l(ist) [first[, last]] | 列出源代碼信息 |
s(tep) | 進入函數體 |
n(ext) | 執行下一行代碼 |
c(ont(inue)) | 繼續,直到遇到下一個斷點 |
r(eturn) | 執行到函數體結束那行 |
b(reak) | 設置斷點,可以是代碼行號,方法名, 還可以加進入條件 |
tbreak | 設置臨時斷點,進入一次后,自動消失 |
cl(ear) | 取消斷點 |
disable | 讓斷點失效 |
enable | 讓斷點生效 |
ignore | 忽略斷點n次 |
condition | 給斷點添加條件,符合條件的才進入斷點 |
j(ump) lineno | 跳掉指定行 |
a(rgs) | 打印函數體參數信息 |
p expression | 打印變量 |
pp expression | 同上,打印得漂亮一些 |
! statement | 執行代碼,非常有用,可用來修改變量值 |
q(uit) | 退出調試(pdb的quit很黃很暴力) |