1. 程式人生 > >python 除錯模式pdb(轉)

python 除錯模式pdb(轉)

標準庫的pdb

pdb是Python自帶的一個庫,為Python程式提供了一種互動式的原始碼除錯功能,包含了現代偵錯程式應有的功能,包括設定斷點、單步除錯、檢視原始碼、檢視程式堆疊等。如果讀者具有C或C++程式語言背景,則一定聽說過gdb。gdb是一個由GNU開源組織釋出的、UNIX/LINUX作業系統下的、基於命令列的、功能強大的程式除錯工具。如果讀者之前使用過gdb,那麼,幾乎不用學習就可以直接使用pdb。pdb和gdb保持了一樣的用法,這樣可以降低工程師的學習負擔和Python除錯的難度,pdb提供的部分除錯命令見下表。

有兩種不同的方法啟動Python偵錯程式,一種直接在命令列引數指定使用pdb模組啟動Python檔案,如下所示:

python -m pdb test_pdb.py

另一種方法是在Python程式碼中,呼叫pdb模組的set_trace方法設定一個斷點,當程式執行自此時,將會暫停執行並開啟pdb偵錯程式。

#/usr/bin/python
from __future__ import print_function
import pdb

def sum_nums(n):
    s=0
    for i in range(n):
        pdb.set_trace()
        s += i
        print(s)

if __name__ == '__main__':
    sum_nums(5)

兩種方法並沒有什麼質的區別,選擇使用哪一種方式主要取決於應用場景,如果程式檔案較短,可以通過命令列引數的方式啟動Python偵錯程式;如果程式檔案較大,則可以在需要除錯的地方呼叫set_trace方法設定斷點。無論哪一種方式,都會啟動Python偵錯程式,前者將在Python原始碼的第一行啟動Python偵錯程式,後者會在執行到pdb.set_trace()時啟動偵錯程式。

啟動Python偵錯程式以後,就可以使用前面的除錯命令進行除錯,例如,下面這段除錯程式碼,我們先通過bt命令查看了當前函式的呼叫堆疊,然後使用list命令查看了我們的Python程式碼,之後使用p命令列印了變數當前的取值,最後使用n執行下一行Python程式碼。

lmx@host1:~/temp$ python test_pdb.py
> test_pdb.py(9)sum_nums()
-> s += i
(Pdb) bt
  test_pdb.py(13)<module>()
-> sum_nums(5)
> test_pdb.py(9)sum_nums()
-> s += i
(Pdb) list
  4
  5     def sum_nums(n):
  6         s=0
  7         for i in range(n):
  8             pdb.set_trace()
  9  ->         s += i
 10             print(s)
 11
 12     if __name__ == '__main__':
 13         sum_nums(5)
[EOF]
(Pdb) p s
0
(Pdb) p i
0
(Pdb) n
> test_pdb.py(10)sum_nums()
-> print(s)

轉自https://zhuanlan.zhihu.com/p/25942045

相關推薦

python 除錯模式pdb()

標準庫的pdb pdb是Python自帶的一個庫,為Python程式提供了一種互動式的原始碼除錯功能,包含了現代偵錯程式應有的功能,包括設定斷點、單步除錯、檢視原始碼、檢視程式堆疊等。如果讀者具有C或C++程式語言背景,則一定聽說過gdb。gdb是一個由GNU開源組織釋出的、UNIX/LINUX作業系統下的

python除錯pdb基本用法()

轉自IBM開發者社群。 使用pdb進行除錯: pdb 是 python 自帶的一個包,為 python 程式提供了一種互動的原始碼除錯功能,主要特性包括設定斷點、單步除錯、進入函式除錯、檢視當前程式碼、檢視棧片段、動態改變變數的值等。pdb 提供了一些常用的除錯命令,詳情見表 1。

如何在 Linux 中啟用 Shell 指令碼的除錯模式

指令碼是儲存在一個檔案的一系列命令。在終端上輸入一個個命令,按順序執行的方法太弱了,使用指令碼,系統中的使用者可以在一個檔案中儲存所有命令,反覆呼叫該檔案多次重新執行命令。 在學習指令碼或寫指令碼的初期階段,我們通常從寫小指令碼或者幾行命令的短指令碼開始,除錯這樣的指令

如何在 Shell 指令碼中執行語法檢查除錯模式

我們開啟了 Shell 指令碼除錯系列文章,先是解釋了不同的除錯選項,下面介紹如何啟用 Shell 除錯模式。 寫完指令碼後,建議在執行指令碼之前先檢查指令碼中的語法,而不是檢視它們的輸出以確認它們是否正常工作。 在本系列的這一部分,我們將瞭解如何使用語法檢查除錯模式

python 除錯技巧-pdb

使用 pdb 進行除錯 pdb 是 python 自帶的一個包,為 python 程式提供了一種互動的原始碼除錯功能,主要特性包括設定斷點、單步除錯、進入函式除錯、檢視當前程式碼、檢視棧片段、動態改變變數的值等。pdb 提供了一些常用的除錯命令,詳情見表 1。 表 1.

自精通Python設計模式Python設計模式之創建型模式——2.建造者模式

生成 需要 結構 progress per 展示 有意 odi con   建造者模式將一個復雜對象的構造過程與其表現分離,這樣,同一個構造過程可用於創建多個不同的表現。   我們來看個實際的例子,假設我們想要創建一個HMTL頁面生成器,HTML頁面的基本結構(構造組件)

python中斷點除錯模組pdb從入門到實戰

python模組簡介 在使用jupyter book、ipyhton或執行命令列時,通常會遇到除錯很不方便的情況。還好Python有自帶的pdb庫,發現用pdb來除錯程式還是很方便的,當然了,什麼遠端除錯,多執行緒之類,pdb是搞不定的 pdb模組使用的三種方式 1. 命令列模式

python在Ubuntu系統下的除錯工具pdb

使用 pdb 進行除錯 pdb 是 python 自帶的一個包,為 python 程式提供了一種互動的原始碼除錯功能,主要特性包括設定斷點、單步除錯、進入函式除錯、檢視當前程式碼、檢視棧片段、動態改變變數的值等。pdb 提供了一些常用的除錯命令 參考連結

JAVA設計模式之單例模式

單例對象 日誌 locking anti 常見 基本上 title 加載 懶漢式 本文繼續介紹23種設計模式系列之單例模式。 概念:  java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裏主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。  單例模式有以下特

Java設計模式補充:回調模式、事件監聽器模式、觀察者模式

應該 hand 關閉 lan china 關註 update 使用 event 一、回調函數 為什麽首先會講回調函數呢?因為這個是理解監聽器、觀察者模式的關鍵。 什麽是回調函數 所謂的回調,用於回調的函數。 回調函數只是一個功能片段,由用戶按照回調函數調用約定來實現的

Python設計模式之單例模式

定義 eat size 字典 con gin 自動 super pytho 單例模式單例模式需要註意的地方在於如何保證創建的實例是唯一的如何保證多線程情況下的訪問清晰明了目前有這麽幾種方法:modulemetaclass__new__decoratormodule其實,Py

Python之str型成int型

port bsp char pan func tool fun lam lambda str轉int: 1 def fn(x,y): 2 return x*10+y 3 4 def char2num(s): 5 return {‘0‘:0, ‘1‘:1,

PYTHON設計模式學習(3):Singleton pattern

blog ora 參考 擁有 沒有 _屬性 ces cti ttr 參考了其他的博客:http://ghostfromheaven.iteye.com/blog/1562618 #-*- encoding=utf-8 -*- print ‘--------------

適配器模式

-h ring 不兼容 detail 總結 實現 沒有 有道詞典 pop 現實生活中的適配器 本文討論適配器模式。適配器模式是23中設計模式之一,它的主要作用是在新接口和老接口之間進行適配。它非常像我們出國旅行時帶的電源轉換器。為了舉這個例子,我還特意去京東上搜了一下電

python格式化輸出(

表達式 () 進制 整數 格式化輸入輸出 字符串 賦值 pytho 內置 在許多編程語言中都包含有格式化字符串的功能,比如C和Fortran語言中的格式化輸入輸出。Python中內置有對字符串進行格式化的操作%。 模板 格式化字符串時,Python使用一個字符串作為模板

Python 爬蟲 2 (

規範 return python 爬蟲 直接 htm str 保存 urn find 一,獲取整個頁面數據 首先我們可以先獲取要下載圖片的整個頁面信息。 getjpg.py #coding=utf-8 import urllib def getHtml(url):

23種設計模式(9):訪問者模式

類方法 打印 interface 增加 http col visitor 設計模式的 接口 定義:封裝某些作用於某種數據結構中各元素的操作,它可以在不改變數據結構的前提下定義作用於這些元素的新的操作。 類型:行為類模式 類圖: 訪問者模式可能是行為類模式中最

15個最受歡迎的Python開源框架(

beta greenlet rest架構 進行 blank pack jin rom lsa 原文地址:http://blog.jobbole.com/72306/ Django: Python Web應用開發框架 Django 應該是最出名的Python框架,GAE甚

PEP8 Python 編碼規範整理[]

長度 sys ret 換行 效率 一行 操作 style 命名沖突 PEP8 Python 編碼規範,僅供參考,不必完全遵守。 一 代碼編排1 縮進。4個空格的縮進(編輯器都可以完成此功能),不使用Tab,更不能混合使用Tab和空格。2 每行最大長度79,換行可以使用反斜杠

Python設計模式——觀察者模式

val property 創建倉庫 tool return observe send als 工作流 例子1:class Service: def __init__(self, service_name, process_name, port, enable_mon