国产探花免费观看_亚洲丰满少妇自慰呻吟_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函數中。下面,就讓我們看看其他幾個令調試更加有趣的選項。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华池县| 招远市| 华宁县| 商洛市| 淳安县| 防城港市| 军事| 固镇县| 泾源县| 乐清市| 平阳县| 衡阳市| 昌图县| 惠东县| 黄梅县| 峨眉山市| 城口县| 嘉黎县| 洪湖市| 崇文区| 临朐县| 西安市| 石台县| 太保市| 奎屯市| 南丹县| 定安县| 铜川市| 聂荣县| 林周县| 衡东县| 茶陵县| 通城县| 北票市| 安宁市| 海城市| 思南县| 甘孜县| 探索| 平塘县| 鄂尔多斯市|