簡體   English   中英

在 Python 中,如何使用交互式命令行(和可視斷點?)進行調試

[英]In Python, how do I debug with an interactive command line (and visual breakpoints?)

我最近從 Matlab 轉移到 Python。 Python 是一種更好的語言(從計算機科學家的角度來看),但是 Python IDE 似乎都缺少一個重要的東西:

一個合適的交互式調試器。

我在找:

  • 通過在編輯器中的一行代碼旁邊單擊來以圖形方式設置斷點的能力。

  • 在調試器中停止時運行任何代碼的能力,包括從我的代碼調用函數、顯示新窗口、播放音頻等。

  • 發生錯誤時,調試器應自動在錯誤行打開交互式控制台。

  • 完成交互式控制台后,您可以恢復正常執行。

Matlab 具有所有這些功能,並且它們的運行非常好,但是我在 Python 工具中找不到它們。

我試過了:

  • PyCharm:交互式控制台笨拙,經常無法出現,並且一直崩潰(我嘗試了幾個不同的版本和操作系統)。

  • IPython:無法設置斷點 - 以編程方式啟動 Python 控制台:您必須停止代碼,插入額外的代碼行,然后從頭開始再次運行才能執行此操作。 此外,如果不重新導入,您將無法訪問已導入的函數。

能夠在問題第一次出現時進行調試和修復對我來說非常重要,因為我在處理通常需要幾十分鍾才能重新運行的程序(計算神經科學)。

結論:目前沒有辦法在 Python 中完成所有這些。 讓我們希望 PyLab 的發展加速。

許多Python IDE 這是一個主題: 用於Python的IDE是什么?

  • “通過單擊編輯器中的一行代碼旁邊以圖形方式設置斷點的功能。”

PyDev有這個。 雙擊灰色邊距欄。

  • “能夠在調試器中停止運行任何代碼,包括從我的代碼調用函數,顯示新窗口,播放音頻等。”

PyDev有這個 這不是唯一的一個。 PyScripter的聲明功能似乎包含了這一點。

  • “發生錯誤時,調試器應自動在錯誤行打開交互式控制台。”

PyDev這樣做。 (我想。或者在最壞的情況下,您是否需要雙擊控制台消息,指出錯誤在代碼中的位置?)

  • “完成交互式控制台后,您可以恢復正常執行。”

PyDev有這個。 它被稱為“簡歷”。 它就是工具欄中綠色的“游戲”三角形。 其他一些軟件稱此功能為“繼續”。

在代碼的頂部,寫

import pdb

在您的代碼中,在您想要調試的任何地方使用以下語句。

pdb.set_trace()

每當滿足set_trace()語句時,您將擁有一個交互式shell。

然后,您可以使用step(s)next(n)continue(c)等來檢查執行流程,並打印變量值,例如print var

有關pdb的更多詳細信息, 請參閱此處

我一直在尋找相同的,但不幸的是,Python IDE在這一點上並不像Matlab那樣功能齊全。 對於科學編程,您還希望圖形/繪圖在完全不同的線程中運行,因此IPython集成至關重要。 據我所知,Matlab IDE功能從調試器更改工作區,然后影響隨后運行的代碼,這是非常獨特的。 某些 IDE中存在每個功能,但並不存在:

  • Spyder與科學工具有很好的集成,但它的調試僅限於內置的pdb ,它缺乏執行任何代碼的要求,並且在繼續之后使這些代碼影響命名空間。
  • PyDevPyCharm以及其他一些人都有不錯的調試功能,但我認為它與科學工具沒有很好的集成。 這意味着,如果您進行繪圖,則會失去對提示的訪問權限。 不好。

據我所知,最接近Wing IDE 它是一種支持產品,但是如果您從Matlab轉換89美元/年用於非商業用途應該是可接受的(您可以先評估它)。 但對我來說,我最終決定改變我的工作流程,而不是使用任何復雜的IDE。 幾年前我看的時候,情況也許有所改善。

您可能還會對2013年4月的“ 為科學Python評估IDE”這篇文章感興趣。 它也沒有真正得出結論。

您可以在iPython Notebook中完成所有這些操作。 使用magic命令%pdb停止出錯。

看到你是從Matlab來的,我建議你看看

蟒(X,Y)

該頁面描述如下:

Python(x,y)是一個免費的科學和工程開發軟件,用於基於Python編程語言,Qt圖形用戶界面和Spyder交互式科學開發環境的數值計算,數據分析和數據可視化。

它不會滿足你的所有願望,但當我開始使用Python時,它確實讓我感到很舒服,來自Matlab。

希望能幫助到你

如果使用命令行,

alias ipythondebug='ipython --InteractiveShell.pdb true'

在你的 ~/.profile 中會給你像 Matlab 這樣的錯誤調試。 這當然需要安裝 ipython。

不確定恢復部分。

如果您希望錯誤時的調試是永久性的,您還可以編輯 ipython 配置文件。 https://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-pdb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM