欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用pdb調(diào)試代碼的技巧

 更新時間:2020年05月03日 10:28:51   作者:吾非同  
Pdb就是Python debugger,是python自帶的調(diào)試器。這篇文章主要介紹了Python使用pdb調(diào)試代碼的技巧,需要的朋友可以參考下

什么是pdb

不知道大家在用Python寫代碼出現(xiàn)報錯時是怎樣調(diào)試的,從報錯提示定位回去一步一步check每一行?如果沒有IDE或者命令行寫代碼時又該怎樣快速調(diào)試?這時如果使用pdb進(jìn)行調(diào)試將會異常方便。

Pdb就是Python debugger,是python自帶的調(diào)試器。通過 pdb 我們可以交互式的查看運(yùn)行過程中變量的值、設(shè)置斷點、逐行執(zhí)行代碼、查看代碼的調(diào)用棧等等。并且如果環(huán)境沒有 GUI 的話,那么 pdb 能夠助你更快速的調(diào)試代碼。

首先我們準(zhǔn)備一段有問題的代碼用于示例

def test(p):
  p = p + 1
  
  return p

def fastdebug():
  print('start')
  temp = 'ready' 
  print('ok')
  res = test(temp) 
  print('end')
  
fastdebug()

這段代碼很簡單,當(dāng)我們執(zhí)行fastdebug()時,會執(zhí)行fastdebug函數(shù)并在該函數(shù)中調(diào)用另一個函數(shù)test(),test函數(shù)接收一個參數(shù)p并計算p+1的值傳出。很明顯,在高亮的一句代碼中傳進(jìn)去的參數(shù)temp是str,所以當(dāng)我們執(zhí)行上面一段代碼時一定會報錯

現(xiàn)在讓我們假裝不知道問題出在哪,使用pdb來調(diào)試這段代碼。

使用pdb

由于pdb是python標(biāo)準(zhǔn)庫因此我們可以直接import 使用

import pdb

接著在我們需要調(diào)試的代碼段前設(shè)一個斷點

pdb.set_trace()

應(yīng)用到我們的代碼:point_down:

可以看到運(yùn)行代碼后,pdb的調(diào)試器控制臺將從放置set_trace()的位置開始等待我們的命令,并且箭頭標(biāo)記指向pdb接下來要運(yùn)行的行。那么接下來介紹一些pdb中常用命令

使用n來執(zhí)行下一行

可以看到此時調(diào)試器指向

print('start')

在彈出的文本框中輸入n即可執(zhí)行該行,并且箭頭將指向下一行即將執(zhí)行的代碼

使用ENTER重復(fù)上一個命令

現(xiàn)在還沒有到報錯的位置,我們使用n或者直接回車重復(fù)執(zhí)行上一個命令

使用p打印變量值

在Pdb中我們可以使用p + 變量名來查看變量值,比如我們查看變量temp的值

使用l查看上下行代碼

在Pdb中我們可以使用l查看當(dāng)前行上下幾行代碼

使用s進(jìn)入子函數(shù)

現(xiàn)在,我們來到出錯的這一行,之所以報錯就是傳進(jìn)去變量出了問題,因此我們可以在pdb交互行中使用s來進(jìn)入子函數(shù)test()

使用r執(zhí)行函數(shù)直到結(jié)束

在pdb中可以使用r來執(zhí)行當(dāng)前運(yùn)行函數(shù)到結(jié)束

使用c停止調(diào)試并繼續(xù)運(yùn)行

現(xiàn)在我們修改相關(guān)代碼完成調(diào)試,可以使用c命令繼續(xù)執(zhí)行命令

當(dāng)然也可以輸入q直接退出調(diào)試界面

以上就是使用Python標(biāo)準(zhǔn)庫執(zhí)行一次debug過程,可以看到pdb在命令行下調(diào)試代碼是非常出色的,當(dāng)然在某些情況下pdb將不是最好的選擇比如涉及到多線程相關(guān),而在比較大型的項目使用pdb也顯得力不從心,因此我們需要靈活選擇調(diào)試方案,不過至少我們又掌握了一種代碼調(diào)試工具,不是嗎?

相關(guān)文章

  • Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法

    Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法

    這篇文章主要介紹了Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法,即把字符串在ASCII值或者Unicode值之間相與轉(zhuǎn)換的方法,需要的朋友可以參考下
    2015-05-05
  • Python幾種常見算法匯總

    Python幾種常見算法匯總

    這篇文章主要介紹了如何用Python實現(xiàn)幾種常見算法,文中代碼簡單易懂,方便大家更好的學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • python爬蟲之scrapy框架詳解

    python爬蟲之scrapy框架詳解

    這篇文章主要為大家介紹了python爬蟲之scrapy框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python大批量搜索引擎圖像爬蟲工具詳解

    Python大批量搜索引擎圖像爬蟲工具詳解

    這篇文章主要介紹了Python大批量搜索引擎圖像爬蟲工具,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Python+OpenCv制作證件圖片生成器的操作方法

    Python+OpenCv制作證件圖片生成器的操作方法

    這篇文章主要介紹了Python+OpenCv制作證件圖片生成器的操作方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 教你如何在Pytorch中使用TensorBoard

    教你如何在Pytorch中使用TensorBoard

    TensorBoard是TensorFlow中強(qiáng)大的可視化工具,今天通過本文給大家介紹如何在Pytorch中使用TensorBoard,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友一起看看吧
    2021-08-08
  • python k-近鄰算法實例分享

    python k-近鄰算法實例分享

    這個算法主要工作是測量不同特征值之間的距離,有個這個距離,就可以進(jìn)行分類了。簡稱kNN。
    2014-06-06
  • Python 超時請求或計算的處理方案

    Python 超時請求或計算的處理方案

    這篇文章主要介紹了Python 超時請求或計算的處理方案,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • python實現(xiàn)定時播放mp3

    python實現(xiàn)定時播放mp3

    這篇文章主要介紹了python實現(xiàn)定時播放mp3,程序非常簡單,功能很實用,主要是使用python實現(xiàn)了一首mp3歌每半小時播放一次,有需要的小伙伴可以參考下。
    2015-03-03
  • Python實現(xiàn)發(fā)送郵件到自己郵箱

    Python實現(xiàn)發(fā)送郵件到自己郵箱

    在日常開發(fā)中,我們經(jīng)常需要監(jiān)控應(yīng)用程序的狀態(tài),及時發(fā)現(xiàn)問題并采取措施解決。而通過郵件發(fā)送報警信息則是一種常見的實現(xiàn)方式。本文就來介紹一下Python實現(xiàn)發(fā)送郵件到自己郵箱的方法
    2023-04-04

最新評論