導航:首頁 > 編程語言 > python單步調試工具

python單步調試工具

發布時間:2023-05-10 18:12:47

❶ 如何用pdb進行python調試

本文章講述了如何用pdb進行python調試講解.
當手邊

沒有IDE,面對著python調試犯愁時,你就可以參考下本文;(pdb 命令調試)
和 (pdb)help

用pdb進行python調試,用法頃襪基本和gdb差不多,
先看一個簡單的例子:
epdb1.py .# epdb1.py -- experiment with the Python debugger, pdb
a = "aaa"
b = "bbb"
c = "ccc"
final = a + b + c
print final
比如要對這個程序進行調試:
1:在文件前面加上這一句,引入調試的模塊。
import pdb
2:在要開始調試的一行加上pdb.set_trace()文件變成:
# epdb1.py -- experiment with the Python debugger, pdb
import pdb
a = "aaa"
逗乎伏pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print final 可以運行這個程序,到斷點出會停下來,和gdb類似,
可以執行命令:
直接回車是重復前一條命令!
p(print) 查看一個變數值
n(next) 下一步
s(step) 單步,可進入函數
c(continue)繼續前進
l(list)看源代碼

用pdb調試有多種方式可選:
1.命令行啟動目標程序,加上-m參數,這樣調用myscript.py的話斷點就是程序的執行第一行之前
python -m pdb myscript.py
2. 在Python交互環境中啟用調試
>>> import pdb
>>> import mymole
>>> pdb.run('mymole.test()')
3.比較常用的,就是在程序中間插入一段程序,相對於在一般IDE裡面打上斷點然後啟動debug,不過這種方式是hardcode的 if __name__ == "__main__" :
a = 1
importpdb
pdb .set_trace()
b = 2
c = a + b
print( c)
然後正常運行腳本,到了pdb.set_trace()那就會定下來,就可以看到調試的提示符(Pdb)了
常用的調試命令 h(elp),會列印當前版本Pdb可用的命令,如果要查詢某個命令,可以輸入 h [command],例如:"h l" - 查看list命令
l(ist),可以列出當前將要運行的代碼塊
(Pdb) l
497 pdb.set_trace()
498 base_data = {}
499 new_data = {}
500 try:
501 execfile(base_file_name,{},base_data)
502 -> execfile(new_file_name,{},new_data)
503 except:
504 logger.writeLog("error! load result log error!")
505 print "load cmp logs error!"
506 raise Exception, "load cmp logs error!"
507>斷點設置
(Pdb)b10 #斷點設置在本py的第10行
或(Pdb)bots.py:20 #斷點設置到 ots.py第20行
刪除斷點(Pdb)b #查看斷點編號
(Pdb)cl 2 #刪除第2個斷點
>運行
(Pdb)n #單步運行
(Pdb)s #細點運行 也就是會下到,方法
(Pdb)c #跳到下個斷點
山攜>查看
(Pdb)p param #查看當前 變數值
(Pdb)l #查看運行到某處代碼
(Pdb)a #查看全部棧內變數 b(reak), 設置斷點,例如 "b 77″,就是在當前腳本的77行打上斷點,還能輸入函數名作為參數,斷點就打到具體的函數入口,如果只敲b,會顯示現有的全部斷點
(Pdb) b 504
Breakpoint 4 at /home/jchen/regression/regressionLogCMP.py:504 condition bpnumber [condition],設置條件斷點,下面語句就是對第4個斷點加上條件"a==3"
(Pdb) condition 4 a==3
(Pdb) b
Num Type Disp Enb Where
4 breakpoint keep yes at /home/jchen/regression/regressionLogCMP.py:504
stop only if a==3 cl(ear),如果後面帶有參數,就是清除指定的斷點(我在Python2.4上從來沒成功過!!!);如果不帶參數就是清除所有的斷點
(Pdb) cl
Clear all breaks? y disable/enable,禁用/激活斷點
(Pdb) disable 3
(Pdb) b
Num Type Disp Enb Where
3 breakpoint keep no at /home/jchen/regression/regressionLogCMP.py:505 n(ext),讓程序運行下一行,如果當前語句有一個函數調用,用n是不會進入被調用的函數體中的
s(tep),跟n相似,但是如果當前有一個函數調用,那麼s會進入被調用的函數體中
c(ont(inue)),讓程序正常運行,直到遇到斷點
j(ump),讓程序跳轉到指定的行數
(Pdb) j 497
> /home/jchen/regression/regressionLogCMP.py(497)com pareLog()
-> pdb.set_trace() a(rgs),列印當前函數的參數
(Pdb) a
_logger =
_base = ./base/MRM-8137.log
_new = ./new/MRM-8137.log
_caseid = 5550001
_toStepNum = 10
_cmpMap = {'_bcmpbinarylog': 'True', '_bcmpLog': 'True', '_bcmpresp': 'True'} p,最有用的命令之一,列印某個變數
(Pdb) p _new
u'./new/MRM-8137.log' !,感嘆號後面跟著語句,可以直接改變某個變數
q(uit),退出調試

==============================================================================================
在python中使用pdb模塊可以進行調試
import pdb
pdb.set_trace()

也可以使用python -m pdb mysqcript.py這樣的方式

(Pdb) 會自動停在第一行,等待調試,這時你可以看看 幫助
(Pdb) h
說明下這幾個關鍵 命令

>斷點設置
(Pdb)b 10 #斷點設置在本py的第10行
或(Pdb)b ots.py:20 #斷點設置到 ots.py第20行
刪除斷點(Pdb)b #查看斷點編號
(Pdb)cl 2 #刪除第2個斷點

>運行
(Pdb)n #單步運行
(Pdb)s #細點運行 也就是會下到,方法
(Pdb)c #跳到下個斷點
>查看
(Pdb)p param #查看當前 變數值
(Pdb)l #查看運行到某處代碼
(Pdb)a #查看全部棧內變數
(Pdb)w 列出目前call stack 中的所在層。
(Pdb)d 在call stack中往下移一層
(Pdb)u 在call stack中往上移一層。如果在上移一層之後按下 n ,則會在上移之後的一層執行下一個敘述,之前的 function call 就自動返回。
(Pdb)cl 清除指定的斷點。如果沒有帶參數,則清除所有斷點。
(Pdb)disable 取消所有斷點的功能,但仍然保留這些斷點。
(Pdb)enable 恢復斷點的功能。
(Pdb)ignore 設定斷點的忽略次數。如果沒指定 count,其初始 為 0。當 count 為 0 時,斷點會正常動作。若有指定 count,則每次執行到該中斷, count 就少 1,直到 count 數為 0。
(Pdb)condition bpnumber [condition]
(Pdb)j(ump) lineNo. 跳到某行執行。只有在 call stack 的最底部才能作用。
(Pdb)l 列出目前所在檔案中的位置。連續地 l 命令會一直列到檔案結尾,可以使用指定行數或范圍來列印。
(Pdb)pp 和 p 命令類似,但是使用 pprint mole(沒用過 pprint,詳情請參考 Python Library Reference)。
(Pdb)alias 以一個"別名"代替"一群除錯命令",有點類似 c/c 的 macro(詳情請參考 Python Library Reference)。
(Pdb)unalias 取消某個 alias。
(Pdb)[!]statement 在目前的環境(context)中執行敘述。

轉載

❷ 如何用pdb進行python調試

Debug 對於是一項非常重要盯侍的功能,它能夠幫助我們准確的定位錯誤,發現程序中的 bug。

python 提供了一系列 debug 的工具和包,可供滾歷我們選擇。

pdb 是 python 自帶的一個包,為 python 程序提供了一種交互的源代碼調試功能,主要特性包括

❸ python工具有哪些

第一款:最強終端 Upterm
它是一個全平台的終端,可以說是終端里的IDE,有著強大的自動補全功能,之前的名字叫作:BlackWindow。有人跟他說這個名字不利於社區推廣,改名叫Upterm之後現在已經17000+Star了。
第二款:互動式解釋器 PtPython
一個互動式的Python解釋器,支持語法高亮、提示,甚至是VIM和emacs的鍵入模式。
第三款:包管理必備 Anaconda
強烈推薦:Anaconda。它能幫你安裝許多麻煩的東西,包括:Python環境、pip包管理工具、常用的庫、配置好環境路徑等等。這些小事情小白自己一個個去做的話,容易遇到各種問題,也容易造成挫敗感。如果你想用Python搞數據方面的事情,安裝它就可以了,它甚至開發了一套JIT的解釋器Numba。所以Anaconda有了JIT之後,對線上科學計算效率要求比較高的東西也可以搞定了。
第四款:編輯器 Sublime3
如果你是小白的話,推薦從PyCharm開始上手,但是有時候寫一些輕量的小腳本,就會想到輕量級一點的工具。Sublime3很多地方都有了極大的提升,並且用起來比原來還要簡單,配合安裝Anaconda或CodeIntel插件,可以讓Sublime3擁有近乎IDE的體驗。
第五款:前端在線編輯器 CodeSandbox
雖然這個不算是真正意義上的Python開發工具,但如果後端工程師想要寫前端的話,這個在線編輯器太方便了,節省了後端工程師的生命。不用安裝npm的幾千個包了,它已經在雲端完成了,才讓你直接就可以上手寫代碼、看效果。對於React、Vue這些主流前端框架都支持。
第六款:Python Tutor
Python
Tutor是一個免費教育工具,可幫助學生攻克編程學習中的基礎障礙,理解每一行源代碼在程序執行時在計算機中的過程。通過這個工具,教師或學生可以直接在web瀏覽器中編寫Python代碼,並逐步可視化地運行程序。
第七款:IPython
如何進行互動式編程?沒錯,就是通過IPython。IPython相對於Python自帶的shell要好用的多,並且能夠支持代碼縮進、TAB鍵補全代碼等功能。如果進行互動式編程,這是不可缺少的工具。
第八款:Jupyter Notebook
Jupyter
Notebook就像一個草稿本,能將文本注釋、數學方程、代碼和可視化內容全部組合到一個易於共享的文檔中,以Web頁面的方式展示,它是數據分析、機器學習的必備工具。
第九款:Pycharm
Pycharm是程序員常常使用的開發工具,簡單、易用,並且能夠設置不同的主題模式,根據自己的喜好來設置代碼風格。
第十款:Python Tutor
這個工具可能對初學者比較有用,而對於中高級程序員則用處較少。這個工具的特色是能夠清楚的理解每一行代碼是如何在計算機中執行的,中高級程序員一般通過分步調試可以實現類似的功能。這個工具對於最初接觸Python、最初來學習編程的同學還是非常有用的,初學者可以體驗一下。

❹ python如何一步步調試

裝個Pycharm

1 添加斷點

2 Debug下運行代碼:

3 F8:進行下一步操作

F7 :跳入下一個方法中

❺ python腳本可以單步調試嗎

可以,選擇帶調試功能的編殲改歷咐輯器就行了氏爛判,比如
PyCharm,
PyScripter

❻ 調試python代碼的方法有哪些

本文討論在沒有方便的IDE工具可用的情況下,使用pdb調試python程序

源碼例子

例如,有模擬稅收計算的程序:

#!/usr/bin/python
def debug_demo(val):
if val <= 1600 :
print "level 1"
print 0
elif val <= 3500 :
print "level 2"
print (val - 1600) * 0.05
elif val <= 6500 :
print "level 3"
print (val - 3500) * 0.10 + (3500-1600) * 0.05
else:
print "level 4"
print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
#~def debug_demo
if __name__ == "__main__":
debug_demo(4500)

debug_demo函數計算4500的入賬所需的稅收。

如何調試?

1.加入斷點

在需要插入斷點的地方,加入紅色部分代碼:如果_DEBUG值為True,則在該處開始調試(加入_DEBUG的原因是為了方便打開/關閉調試)。

#!/usr/bin/python
_DEBUG=True
def debug_demo(val):
if _DEBUG == True:
import pdb
pdb.set_trace()
if val <= 1600 :
print "level 1"
print 0
elif val <= 3500 :
print "level 2"
print (val - 1600) * 0.05
elif val <= 6500 :
print "level 3"
print (val - 3500) * 0.10 + (3500-1600) * 0.05
else:
print "level 4"
print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
#~def debug_demo
if __name__ == "__main__":
debug_demo(4500)

2.開始運行調試

運行程序./debug_demo.py,得到

> /usr/local/qspace/user_network/debug_demo.py(7)debug_demo()
-> if val <= 1600 :
(Pdb)

-> val <= 1600 : 指示當前執行的語句,(Pdb)等待你的調試指令. pdb的指令很豐富,輸入h指令可以查看指令的使用方法。下面簡單介紹常用指令:

查看代碼上下文,l(小寫L)

(Pdb) l
2 _DEBUG=True
3 def debug_demo(val):
4 if _DEBUG == True:
5 import pdb
6 pdb.set_trace()
7 -> if val <= 1600 :
8 print "level 1"
9 print 0
10 elif val <= 3500 :
11 print "level 2"
12 print (val - 1600) * 0.05
(Pdb)

左邊是行號,右邊是代碼正文。

監視變數:p 變數名

(Pdb) p val
4500
(Pdb)

單步執行: n

-> elif val <= 3500 :
(Pdb) l
5 import pdb
6 pdb.set_trace()
7 if val <= 1600 :
8 print "level 1"
9 print 0
10 -> elif val <= 3500 :
11 print "level 2"
12 print (val - 1600) * 0.05
13 elif val <= 6500 :
14 print "level 3"
15 print (val - 3500) * 0.10 + (3500-1600) * 0.05

加入斷點:b 行號

(Pdb) b 14

運行到斷點: c

(Pdb) c
> /*****
-> print "level 3"
(Pdb) l
9 print 0
10 elif val <= 3500 :
11 print "level 2"
12 print (val - 1600) * 0.05
13 elif val <= 6500 :
14 B-> print "level 3"
15 print (val - 3500) * 0.10 + (3500-1600) * 0.05
16 else:
17 print "level 4"
18 print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05
19

執行到函數返回前: r

(Pdb) r
level 3
195.0
--Return--
> /****()

->None
-> print (val - 3500) * 0.10 + (3500-1600) * 0.05
(Pdb)

說明:

pdb還有很多其他很多有用的指令,讀者可以自行探索。輸入h,h 命令。就可以得到命令的詳細幫助。

不過,我個人認為一般無需啟動這種調試方法,一般使用日誌輸出進行調試即可,除非遇到了非常微妙的錯誤。這時,單步調試的威力便顯示出來了

❼ 分享!5個好用的Python工具

1、 IDLE


IDLE直譯過來就是集成開發與學習環境的意思,一般安裝 Python 時也會默認安裝 IDLE。每個語言都可以有自己的IDLE。它讓Python的入門變得簡單,對於沒什麼基礎的人寫就對了。它的主要功能包括Python shell 窗口(互動式解釋器)、跨平台(Windows、Linux、UNIX、Mac OS X)、智能縮進、代碼著色、自動提示、可以實現斷點提示、單步執行等調試功能的基本集成調試器。


2、 Scikit-learn


scikit-learn是一個建立在Scipy基礎上的用於機器學習的Python模塊。其中scikit-learn是最有名的,是開源的,任何人都可以免費地使用這個庫或者進行二次開發。它是一個非常強大的工具,能為庫的開發提供高水平的支持和嚴格的管理。它也得到了很多第三方工具的支持,有豐富的功能適用於各種用例。


3、Theano


Theano是一個較老牌和穩定的機器學習python庫之一,雖然目前使用的人數有所下降。但它畢竟是一個祖師級的存在,一定有它的優點所在。Theano基於Python擅長處理多維數組,屬於比較底層的框架,theano起初也是為了深度學習中大規模人工神經網路演算法的運算所設計,我們可利用符號化式語言定義想要的結果,支持GPU加速,非常適合深度學習Python。


4、Selenium


Selenium 是自動化的最佳工具之一。它屬於 Python 測試的自動化。它在 Web 應用程序中用於自動化框架。支持多款主流瀏覽器,提供了功能豐富的API介面,常被用作爬蟲工具。使用它可以用許多編程語言編寫測試腳本,包括Java、C#、python、ruby等。還可以集成 Junit 和 TestNG 等鈾工具來管理測試用例並生成報告。


5、Skulpt


Skulpt 是一個用 Javascript 實現的在線 Python 執行環境,完全依靠瀏覽器端模擬實現Python運行的工具。不需要任何預處理、插件或伺服器端支持,只需編寫python並重新載入即可。因為代碼完全是在瀏覽器中運行的,所以不用擔心伺服器崩潰的問題。


關於分享!5個好用的Python工具,環球青藤小編就和大家分享到這里了,學習是永無止境的,學習一項技能更是受益終身,所以,只要肯努力學,什麼時候開始都不晚。如果您還想繼續了解關於python編程的學習方法及素材等內容,可以點擊本站其他文章學習。

❽ python eirc怎麼單步調試

  1. 工作文件敬雀櫻夾-選擇你歲磨的py保存目錄。

  2. 命令行不亮叢用選擇,直接點擊ok就可以運行選擇目錄下的py了!

❾ python 為什麼不能一步步手動調試

python的IDLE有調試功能
IDLE的調試功能比較初級,可以用下其它IDE的調試功能如pycharm


IDLE的調試模式:
圖一是打開調試模式的按鈕
圖二是打開的調試界面
圖三是當你運行任何一個運行腳本時,就會進行調試

單步調試什麼的都在那個面板上,斷點要在腳本文件里右鍵打

❿ 大神可以給我介紹一下Python IDLE怎麼用嗎

先簡單介紹一下:

Python IDLE是 python自帶的一款簡潔的集成開發環境,當安裝好python之後,python 菜單組就有一項,可以用來啟動 IDLE:

閱讀全文

與python單步調試工具相關的資料

熱點內容
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:737
方舟編譯器現在可提速哪些軟體 瀏覽:58
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:602
蘋果13如何加密視頻 瀏覽:813
linuxweblogic緩存 瀏覽:67
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:377
找pdf 瀏覽:529
與伺服器連接斷開如何處理 瀏覽:833
伺服器維修預計十分鍾什麼意思 瀏覽:170
黑馬程序員主打教學是什麼 瀏覽:41
python九乘法表怎麼編寫 瀏覽:974
思維方式pdf 瀏覽:656
tcc社區app怎麼注冊 瀏覽:941
央視網下載加密 瀏覽:454
命令行訪問伺服器 瀏覽:36