想讓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 #中止調試並退出