裝個Pycharm
武山網站制作公司哪家好,找成都創新互聯!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設等網站項目制作,到程序開發,運營維護。成都創新互聯2013年開創至今到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創新互聯。
1 添加斷點
2 Debug下運行代碼:
3 F8:進行下一步操作
F7 :跳入下一個方法中
打開pycharm community 2019.1軟件,創建一個項目。
創建一個py后綴的文件作為示范,文件名自己定義。
相關推薦:《Python基礎教程》
編寫代碼,然后右鍵點擊進行運行,查看一下是否有問題。
點擊右上角的蟲子圖標,然后下面會有控制面板出來,點擊Debugger,然后我們在行號那里選擇要調試哪一行,點擊就會有紅點。
再點擊蟲子圖標,這個時候就可以開始調試了,點擊step over或者快捷鍵f8就可以調試了。
但是我們可以看出就直接跳過函數內部,對于函數內部的調試,我們則需要點擊step into,或者快捷鍵f7,這樣才可以調試內部。
工具/材料
電腦,python環境
01
首先打開電腦后,打開終端,我這里以調試debug.py文件做說明,簡單介紹python的pdb調試。為了演示,先用cat命令查看一下debug.py的內容。
02
我這里用的python3的環境,在終端里輸入如圖顯示python3 -m pdb debug.py命令。就是就是用python的pdb模塊調試debug.py文件代碼。
03
進入調試后,在終端里輸入小寫字母l,就是英文單詞list的縮寫,意思就是列出代碼內容。如果顯示。
04
在終端里輸入小寫字母n,就是英文單詞next的縮寫,意思就是執行下一行代碼。
05
在終端里輸入小寫字母p x,p就是英文單詞print的縮寫,意思就是打印變量x的值。
06
在終端里輸入小寫字母s,s就是英文單詞s的縮寫,進入函數內部調試。
07
在終端里輸入小寫字母a,a就是英文單詞arguments(參數)的縮寫,會打印顯示函數所有變量的值。
08
在終端里輸入小寫字母c,就是英文單詞continue的縮寫,意思就是繼續執行代碼一直結束,然后重新進入調試。
09
在終端里輸入小寫字母b和阿拉伯數字6,b就是英文單詞break的縮寫,意思就是在第6行代碼打個斷點。
10
在終端里輸入小寫字母q,q就是英文單詞quit的縮寫,意思就是退出調試。
本文章講述了如何用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 mymodule
pdb.run('mymodule.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 module(沒用過 pprint,詳情請參考 Python Library Reference)。
(Pdb)alias 以一個"別名"代替"一群除錯命令",有點類似 c/c 的 macro(詳情請參考 Python Library Reference)。
(Pdb)unalias 取消某個 alias。
(Pdb)[!]statement 在目前的環境(context)中執行敘述。
轉載
分享題目:python進入函數調試的簡單介紹
瀏覽路徑:http://vcdvsql.cn/article6/hejjig.html
成都網站建設公司_創新互聯,為您提供電子商務、用戶體驗、自適應網站、域名注冊、網站設計、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯