stone2083

          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

            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 8787
            telnet 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或者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

          主站蜘蛛池模板: 华坪县| 故城县| 华阴市| 博白县| 遵义市| 长岭县| 凤冈县| 太康县| 讷河市| 伊吾县| 蛟河市| 桂平市| 砚山县| 达尔| 高阳县| 胶州市| 东山县| 四川省| 广东省| 库伦旗| 兴和县| 库车县| 阿拉尔市| 新晃| 策勒县| 云梦县| 西乌珠穆沁旗| 陕西省| 确山县| 彰武县| 江达县| 云梦县| 尉犁县| 威海市| 平山县| 霍山县| 富蕴县| 大名县| 乐安县| 武隆县| 乳源|