Linux 黑乎乎的命令列下,如何除錯 Python?
一般開發者都是在 IDE 中進行程式的除錯,當然,有 IDE 的話,當然首選 IDE 進行除錯。
但是,有時我們的業務場景,限制只能在 Linux 命令列模式進行除錯。
這時該怎麼辦呢?
今天,就給大家介紹一個 Linux 下除錯 Python 程式的工具。
pdb簡介
pdb 偵錯程式是 Python 標準庫提供的,因此最為方便,不需要安裝其他元件,直接 import 後就能使用。
pdb 偵錯程式提供了除錯所需的大多數功能,如斷點、單行步進、堆疊幀的檢查等等。
常用引數
l # 檢視執行到哪行程式碼
n # 單步執行,跳過函式
s # 單步執行,可進入函式
p 變數 # 檢視變數值
b 行號 # 斷點設定到第幾行
b # 顯示所有斷點列表
cl 斷點號 # 刪除某個斷點
cl # 刪除所有斷點
c # 跳到下一個斷點
r # return 當前函式
exit # 退出
使用示例
本文 Python 環境:Python 3.5.2
我們先準備一小段演示程式:
# -*- coding: utf-8 -*-
def add(a, b):
return a + b
if __name__ == '__main__':
print("===start===")
c = add(1, 3)
print("===end===")
使用方法 1:
執行 pdb 的最簡單方法是從命令列,將程式作為引數傳遞來除錯。
$ python -m pdb test_pdb.py
這時,就開始單步執行了。
這種方法對程式碼沒有侵入性,但是每次都需要設定斷點。
使用方法 2:
在程式碼頭部引入 pdb,然後可以在程式碼裡,透過 pdb.set_trace()
來設定斷點:
# -*- coding: utf-8 -*-
import pdb
def add(a, b):
pdb.set_trace()
return a + b
if __name__ == '__main__':
print("===start===")
pdb.set_trace()
c = add(1, 3)
print("===end===")
此時,執行程式,就會自動跳轉到設定的斷點處:
總結
沒了圖形化頁面,除錯只能這麼來了,不過還好,pdb 使用看著不難吧。
其實還有一些增強的偵錯程式,比如 IPython 的 ipdb 和 pdb++,它們一般都提供了更好的使用者體驗,新增了有用的額外功能,例如語法突出高亮、更好的回溯和自省。
後面有機會再給大家分享吧!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559358/viewspace-2375379/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux串列埠命令列除錯Linux串列埠命令列除錯
- Flutter的命令列除錯Flutter命令列除錯
- Linux awk命令中如何刪除陣列Linux陣列
- Linux下的除錯工具Linux除錯
- linux 下GDB除錯Linux除錯
- 零基礎學習PDB命令列除錯Python程式碼命令列除錯Python
- python命令列如何退出Python命令列
- Windows 下如何除錯 PowerShellWindows除錯
- (14)caffe總結之Linux下Caffe如何除錯Linux除錯
- Linux 命令列下的好東西Linux命令列
- 2019最新Python學習教程升級版(Linux 下如何除錯 Python?)PythonLinux除錯
- Linux下刪除資料夾的命令Linux
- 使用GDB命令列偵錯程式除錯C/C++程式命令列除錯C++
- python如何單步除錯Python除錯
- 詳解Linux命令列下常用svn命令Linux命令列
- linux下幾個問題的除錯Linux除錯
- linux下gdb單步除錯Linux除錯
- linux下的命令列播放器mocLinux命令列播放器
- Linux命令列下編輯常用的快捷Linux命令列
- Linux 命令列下連線WiFiLinux命令列WiFi
- dig的命令除錯除錯
- gdb除錯命令除錯
- windbg除錯命令除錯
- 如何提高linux命令列的工作效率Linux命令列
- Linux 命令列 rm 無法刪除檔案Linux命令列
- Linux有問必答:如何在命令列下壓縮JPEG影像Linux命令列
- 如何在 Linux 命令列操作 PDFLinux命令列
- iOS 下如何一鍵除錯 PushiOS除錯
- Linux 命令列下的最佳文字編輯器Linux命令列
- 在Linux終端命令列下播放音樂的命令(Ubuntu)Linux命令列Ubuntu
- linux下用gdb除錯c程式Linux除錯C程式
- 如何在Linux命令列下檢視幫助?學習linux運維Linux命令列運維
- 在 Linux 命令列下使用“原力”Linux命令列
- Linux 下命令列連線Wifi方法Linux命令列WiFi
- linux下命令列json工具:jqLinux命令列JSON
- [技巧]如何防止Linux命令列下MySQL登入密碼洩露?Linux命令列MySql密碼
- Linux 命令列刪除指定副檔名檔案Linux命令列
- linux下unzip命令出錯問題Linux