Python linux 下的python調試

想讓python也能想C一樣的編譯調試嗎?其實很簡單,python自帶類似gdb的pdb庫,可以實現簡單的調試功能,調試命令與gdb相似,只是功能沒有gdb那麼強大。

import numpy as np
A=np.array([[0.5,0.2,0.3],[0.3,0.5,0.2],[0.2,0.3,0.5]])
B=np.array([[0.5,0.5],[0.4,0.6],[0.7,0.3]])
pi=np.array([0.2,0.4,0.4])
O=[0,1,0]
alpha=np.zeros((A.shape[0],len(O)))
for i in range(0,alpha.shape[0]):
        alpha[i][O[0]]=pi[i]*B[i][O[0]]
for n in range(1,len(O)):
        for i in range(0,alpha.shape[0]):
                alpha[i][O[n]]=sum(alpha[j][n-1] for j in range(0,alpha.shap    e[0]))*B[i][O[n]]
print sum(alpha[i][len(O)] for i in range(0,A.shape[0]))
  • pdb調試

    • python -m pdb test.py
    • l–>查看代碼
      這裏寫圖片描述

    • b 8–>在第八行設置斷點

    • r–>運行到斷點處
      這裏寫圖片描述
    • n –>執行下一步
    • p i–>查看變量i 的值
      這裏寫圖片描述
  • gdb常用的指令

    • h(elp) [comman] #打印可用指令及幫助信息
    • r(eturn) #運行代碼直到下一個斷點或當前函數返回
    • b(reak) [[filename:]lineno | function[, condition]] #指定文件某行或函數體來設置斷點
    • l(ist) [first[, last]] #查看指定代碼段
    • n(ext) #執行下一行
    • s(tep) #執行下一行,若爲函數則進入函數體
    • p #打印某個變量
    • a(rgs) #打印當前函數的參數
    • w(here) #打印堆棧信息
    • d(own) #移至下層堆棧
    • u(p) #移至上層堆棧
    • j(ump) #跳轉到指定行
    • continue / c #繼續執行
    • disable [bpnumber [bpnumber]] #失效斷點
    • enable[bpnumber [bpnumber]] #啓用斷點
    • cl(ear) [filename:lineno | bpnumber [bpnumber]] #刪除斷點
    • q(uit)/exit #中止調試並退出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章