簡體   English   中英

如何以編程方式逐行執行/逐步執行Python代碼

[英]How to programmatically execute/step through Python code line by line

我試圖找到一種方法,我可以逐行完成Python代碼的程序步驟,並對每行的結果做一些事情。 實際上是一個可以通過編程而不是手動控制的調試器。 如果pdb在每個步驟之后作為字符串返回它的輸出,那么pdb就是我正在尋找的東西,然后我可以再次調用pdb來拾取我離開的地方。 但是,它輸出到stdout而我必須通過鍵盤手動輸入“step”。

我嘗試過的事情:

  1. 我能夠重定向pdb的標准輸出。 我可以將它重定向到第二個Python程序,然后處理它。 但是,我無法弄清楚如何讓第二個Python程序告訴pdb步驟。

  2. 與前一個相關,如果我可以讓pdb一直步到最后(也許我可以想出一些東西來欺騙鍵盤反復輸入“step”?)並將輸出重定向到一個文件,我可以寫當它實際上只是逐行讀取文件時,另一個類似於它的程序正在逐步執行程序。

  3. 我可以使用exec手動運行Python代碼行。 但是,由於我一次只看一行,我需要手動檢測和處理條件,循環和函數調用之類的事情,這些事情很快變得非常復雜。

  4. 我讀了一些帖子,說pdb是使用sys.settrace實現的。 如果沒有其他工作,我應該能夠使用它重新創建我需要的行為。

是否有任何既定/直接的方式來實現我正在尋找的行為?

sys.settrace()是逐步執行Python代碼的基本構建塊。 pdb完全用Python實現,因此您只需查看模塊即可了解它是如何工作的。 它還有各種用於在程序控制下步進的公共函數/方法,請閱讀您的Python版本的庫參考以獲取詳細信息。

我讀了一些帖子,說pdb是使用sys.settrace實現的。 如果沒有其他工作,我應該能夠使用它重新創建我需要的行為。

不要將此視為最后的手段。 我認為這是你想要完成的最好的方法。

暫無
暫無

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

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