国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Python中PDB模塊中的命令來調試Python代碼的教程

2020-02-23 00:26:04
字體:
來源:轉載
供稿:網友

你有多少次陷入不得不更改別人代碼的境地?如果你是一個開發團隊的一員,那么你遇到上述境地的次數比你想要的還要多。然而,Python中有一個整潔的調試特性(像其他大多數語言一樣),在這種情況下使用非常方便。本文是一篇快速教程,希望它能讓你的編碼生活更加容易。
1. 一個混亂的程序

出于本教程的目的,讓我們研究一下下面的簡單程序。

這個程序接收兩個命令行參數,然后執行加法和減法操作。

(假設用戶輸入的是有效值,因此代碼中我們沒有進行錯誤處理。)
 

import sysdef add(num1=0, num2=0):  return int(num1) + int(num2)def sub(num1=0, num2=0):  return int(num1) - int(num2)def main():  #Assuming our inputs are valid numbers  print sys.argv  addition = add(sys.argv[1], sys.argv[2])  print addition  subtraction = sub(sys.argv[1], sys.argv[2])  print subtractionif __name__ == '__main__':  main()

2. PDB

Python提供了一個有用的模塊PDB,它實際上是一個交互式源代碼調試器。

你需要下面的兩行代碼來使用此模塊。
 

import pdbpdb.set_trace()

看一下我們修改過的程序,里面包含了一些斷點。
 

import pdbimport sysdef add(num1=0, num2=0):  return int(num1) + int(num2)def sub(num1=0, num2=0):  return int(num1) - int(num2)def main():  #Assuming our inputs are valid numbers  print sys.argv  pdb.set_trace() # <-- Break point added here  addition = add(sys.argv[1], sys.argv[2])  print addition  subtraction = sub(sys.argv[1], sys.argv[2])  print subtractionif __name__ == '__main__':  main()

3. 程序執行觸發調試器

一旦你設置好斷點以后,你就可以像平時一樣執行程序。
 

python debugger.py 1 2

程序將會在遇到的第一個斷點處停止執行。
 

['debugger.py']> /Users/someuser/debugger.py(15)main()-> addition = add(sys.argv[1], sys.argv[2])(Pdb)

我們在第14行設置了一個斷點,所以我們能看到將要執行的下一行是第15行。可以看到,在執行到第15行之前程序已經停止。

在這里我們有幾個選項,讓我們在下面步驟中看看一些調試指令。
4. 下一行->n

在你的調試器提示中,輸入n運行到下一行。
 

> /Users/someuser/debugger.py(14)main()-> addition = add(sys.argv[1], sys.argv[2])(Pdb) n> /Users/someuser/debugger.py(15)main()-> print addition

這會執行當前行代碼,并準備執行下一行。

我們可以使用n來逐行執行整個程序,但這其實沒有什么用處。

可能你已經看到,PDB實際上并沒有進入我們的add函數中。下面,就讓我們看看其他幾個令調試更加有趣的選項。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉安县| 辽阳市| 华坪县| 博爱县| 广昌县| 井研县| 驻马店市| 绥阳县| 印江| 咸丰县| 彭州市| 清远市| 卢氏县| 饶河县| 鹰潭市| 大港区| 阜康市| 远安县| 普兰店市| 临汾市| 宾川县| 舞钢市| 莲花县| 澄迈县| 寿阳县| 忻城县| 屯留县| 邵阳市| 盐津县| 丽江市| 重庆市| 南澳县| 曲水县| 辽中县| 鄂伦春自治旗| 平顶山市| 太康县| 大安市| 囊谦县| 石河子市| 兰考县|