python可以调试吗_调试-有什么好的方法可以使我的Python代码首次运行?
調試-有什么好的方法可以使我的Python代碼首次運行?
我的代碼中出現了很多錯誤。 因此,我希望能夠在一開始就將它們最小化,或者在執行代碼之前看到盡可能多的錯誤。 這可能嗎,如果可以,我該怎么做?
Amara asked 2020-01-05T23:02:05Z
16個解決方案
35 votes
如果語法有問題,可以嘗試使用語法突出顯示的編輯器。 除非您有一種語言的感覺,否則簡單的錯誤將不會突然出現。
調試的最簡單形式是插入一些打印語句。 一種更高級(且可擴展)的方法是使用std lib中的日志記錄模塊。
交互式解釋器是使用python代碼的絕佳工具,而IPython是對內置REPL(讀取Eval打印循環)的一項重大改進。
如果您確實想逐步執行代碼,則python調試器稱為pdb,可以從命令行調用它,也可以將其嵌入代碼中。
如果您習慣使用完全集成的IDE,我建議您將Eclipse與pydev一起使用,并且PyCharm具有出色的商業功能,其中包括自動完成功能,快速訪問文檔以及眾多快捷方式以及許多其他有趣的功能。
JimB answered 2020-01-05T23:02:33Z
30 votes
以下是一些有助于在Python中進行調試的技術:
使用交互式外殼程序,例如ipython。 Python是一種動態語言,您可以在鍵入時瀏覽代碼。 Shell始終在我的編輯器的第二個窗口中運行。
從外殼程序復制粘貼到文檔字符串中的代碼說明了該函數(類,模塊)的主要用法和特殊情況。 放在if __name__=="__main__"部分中的print()允許測試模塊中的所有文檔字符串。 doctest可以與unittest輕松集成。
將print()用于永遠不會發生的事情。
print()可以解決許多調試問題; 日志記錄模塊適用于長期存在的python進程。
編寫測試(不一定在代碼之前),經常運行它們(自動或最多一次按鍵); 鼻子為單元測試提供擴展的測試發現和運行功能。
偶爾跑pylint。
此時,正式的python調試器幾乎沒有用。如果需要,Winpdb是一個外部多平臺GPL'ed GUI python調試器。
jfs answered 2020-01-05T23:03:25Z
15 votes
所有真正酷的東西都可以在交互式解釋器中輕松演示。 我認為這可能是良好設計的“黃金標準”:
您可以互動地上課嗎?
如果您可以交互地進行工作,則可以放心地編寫可測試,簡單,可靠的單元測試和文檔測試。
而且,更重要的是,您可以進行交互式瀏覽。 鍵入代碼并確切地看到發生了什么事,沒有比即時滿足更好的了。
可以保留已編譯的語言習慣(編寫一堆東西,調試一堆東西,測試一堆東西)。 相反,您可以編寫一些內容,進行探索,編寫正式的測試,然后將您的一些內容附加到不斷發展的最終項目中。
您仍然要進行總體設計。 但是,您不必浪費時間來編寫可能有效或無效的代碼。 在Python中,您可以編寫有效的代碼。 如果不確定,則可以交互地玩它直到確定。 然后,您編寫有效的代碼。
S.Lott answered 2020-01-05T23:04:08Z
10 votes
我是python的新手,并且一直在嘗試幾種不同的調試器。 到目前為止,這是我遇到的選項:
帶有Pydev的Eclipse-如果您已經在使用eclipse,這可能是解決之道。 調試器運行良好,并且功能強大。
Komodo IDE-輕量級的Python IDE。 基本上是文本編輯器+調試器。 找出并立即產生成果真的很容易。
WinPDB-嘗試下一個。 看起來很有特色,我可以使用選擇的任何編輯器。
PDB-自從我閱讀了有關WinPDB如何更好的替代方法以來,還沒有嘗試過。
使用%run命令的Ipython-我使用過IPython,但沒有像這樣的調試器。 我需要嘗試一下。 (感謝小費,EOL)
Eric IDE-也在列表中嘗試。
老式打印,斷言-簡單,有用,但不是完整的解決方案。
內存調試-為了調試內存問題,我遇到了一些工具:
objgraph-將生成png的參考圖。 整齊。 還有其他功能,例如:import objgraph; print(objgraph.show_most_common_types(limit = 10))將打印內存中最常見的10種類型。
gc模塊-直接與垃圾收集器進行交互。
笨重-堆分析器。 例如:從guppy import hpy; hp = hpy(); print(hp.heap())將打印最常見的類型,其內存使用情況等。
這是一個非常不完整的列表,但希望它是一個好的開始。
scottm answered 2020-01-05T23:05:22Z
10 votes
Python提供了一個調試器,您可以通過它調試代碼,檢查變量并進行操作。 請參閱[http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/],該指南可以指導您進行操作...
還要檢查python標準庫參考中的pdb[http://www.python.org/doc/2.5.2/lib/module-pdb.html]
Amit answered 2020-01-05T23:05:47Z
7 votes
盡早測試并經常測試。
這并不一定意味著首先要進入測試驅動的設計池(盡管這不是一個壞主意)。 這只是意味著,只要有可用的東西,就測試您的對象和方法。 在進行測試之前,請不要等到擁有大量代碼。
花一些時間來學習測試框架。 如果您鍵入測試用例很簡單,那么您很有可能會這樣做。 如果您沒有任何類型的框架測試,可能會很痛苦,因此請避免使用它。 因此,盡早養成良好的習慣,這樣一來,您的問題就會減少。
Bryan Oakley answered 2020-01-05T23:06:17Z
7 votes
通常,我只使用一堆打印語句。
page = grabpage(url)
print "Page content:", page
print "page type():", type(page)
有時執行以下操作很有用:
debug = True
if debug: print "page content", page
..您可以通過將調試變量更改為False來快速禁用所有調試打印語句。
盡管在大多數情況下,打印調試會使您受益匪淺,但有時很難調試諸如循環或一系列if / else / try / except / etc之類的東西。 為此,允許單步執行代碼并設置斷點的調試器很有用。
winpdb myscript --arg 4 -b 4包含在Python中。 這是一個很好的簡單教程。 您甚至可以執行一些操作,例如在運行時更改變量(本教程將介紹)。 可以在這里找到更長的教程
有一個非常不錯的GUI等效pdb-Winpdb
基本上,您運行winpdb myscript --arg 4 -b 4,然后它將命令加載到終端中,在左側顯示您的代碼,并帶有當前,本地/全局變量(及其值)列表以及當前的調用堆棧。
然后,您可以通過單擊“步驟”(或F6)來瀏覽代碼。 F5運行代碼。 如果單擊行號旁邊的行,它將設置一個斷點,代碼將在該斷點處自動步進(當您按run鍵時)。
我發現它易于使用,并且具有許多其他增強功能(例如遠程調試),因此您可以在要調試的應用程序中運行后端部分(rpdb2),然后將Winpdb連接到它(加密)。 在PDB中支持線程和其他有用的東西,您也可以訪問類似pdb的控制臺。
dbr answered 2020-01-05T23:07:14Z
6 votes
我使用此技巧將Python設置為在出現未捕獲的異常時自動啟動調試器。 這樣,您可以輕松地檢查程序的狀態而無需太多的日志代碼。 (此外,向我發送低吼通知。)
哦,這樣,您可以通過添加以下代碼在代碼中創建一個斷點
if answer == 42:
1/0
Michael Kuhn answered 2020-01-05T23:07:39Z
5 votes
自由地使用assert語句。
answered 2020-01-05T23:07:58Z
4 votes
在執行之前識別錯誤是靜態檢查/分析的領域。 我很幸運使用PyChecker進行Python代碼的基本靜態檢查。
pycheesecake網站上有一個非常好的Python測試工具摘要。
Andrew Beyer answered 2020-01-05T23:08:23Z
4 votes
Eclipse的PyDev插件是我選擇的工具。 它可以識別簡單的語法錯誤和縮進錯誤,并用紅線強調該錯誤。 它具有強大的調試器,甚至還有一個名為PyLint的插件,它會警告您有關危險代碼的信息。
編輯:它還具有關于運行時錯誤,部分自動完成和一些其他精美功能的用戶友好堆棧跟蹤。
再次編輯:我沒有注意到在頂部文章中提到了pydev。 我希望我能帶來一些其他好處。
Nailer answered 2020-01-05T23:08:52Z
1 votes
python -m pdb yourcode.py應該做到這一點。另外,您可以在代碼中“導入pdb”,然后使用pdb.set_trace()設置斷點。請參閱手冊以獲取更多信息:[http://www.python.org/doc/2.5.2/lib/module-pdb.html]
Sridhar Iyer answered 2020-01-05T23:09:13Z
1 votes
有一個非常不錯的Python GUI調試器Winpdb。 試試看。建立在wxWidgets庫和多平臺上。
RobertVa answered 2020-01-05T23:09:33Z
1 votes
為了獲得最全面的體驗,您可以使用完整的IDE,例如PyCharm:
[http://blog.jetbrains.com/pycharm/files/2011/05/template-debug2.png]
aaimnr answered 2020-01-05T23:09:57Z
0 votes
Eric4 IDE還具有出色的內置調試器。
fccoelho answered 2020-01-05T23:10:17Z
0 votes
IPython Python Shell具有%run命令,該命令在出現問題時會自動調用調試器。 然后,您可以檢查變量,單步執行代碼等。
您可以使用%run命令從IPython運行程序。
更普遍地說,就像其他答案中提到的那樣,一個好的Python shell是您的朋友。 IPython是您最好的朋友。 :)
Eric O Lebigot answered 2020-01-05T23:10:46Z
總結
以上是生活随笔為你收集整理的python可以调试吗_调试-有什么好的方法可以使我的Python代码首次运行?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android文件选择器_Android
- 下一篇: python fetchall方法_Py