stone2083

          RPDB-讓PDB(Python調試工具)支持遠程調試功能

          軟件已更新,最新請查看:https://code.google.com/p/stonelab/wiki/pdbx

          軟件介紹

          rpdb擴展了pdb,讓pdb支持遠程調試功能。

          使用了rpdb的python腳本在遠程啟動,本地通過telnet方式連接上rpdb提供的調試端口,接下來的操作和本地完全一致。

          使用說明

          • 下載
          • wget https://stonelab.googlecode.com/files/rpdb-0.1.0.tar.gz 

            有兩個文件:rpdb.py:擴展pdb的類庫; example.py 演示程序
          • 安裝
          • 將rpdb.py拷貝到PYTHONPATH即可,或者直接拷貝rpdb.py上內容到你的python腳本即可(程序非常小巧,30+代碼行)
          • 演示
          • 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 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或者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很黃很暴力)

          posted on 2013-03-21 16:19 stone2083 閱讀(9787) 評論(0)  編輯  收藏 所屬分類: python

          My Links

          Blog Stats

          常用鏈接

          留言簿(9)

          隨筆分類(94)

          隨筆檔案(93)

          tech

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 雅江县| 三原县| 潼南县| 安丘市| 亳州市| 堆龙德庆县| 正宁县| 浦东新区| 新密市| 咸阳市| 府谷县| 孟村| 昌吉市| 宁明县| 廉江市| 龙海市| 兴和县| 永康市| 都安| 屏山县| 南昌市| 红桥区| 得荣县| 崇仁县| 邢台市| 德庆县| 和林格尔县| 民丰县| 盐津县| 塔河县| 潮安县| 西丰县| 宜都市| 周至县| 出国| 沁水县| 突泉县| 望奎县| 阿巴嘎旗| 安阳县| 淄博市|