2009-01-14 25 views
10

我見過一些Python IDE(例如PyDev Extensions,WingIDE),它們提供了一個調試控制檯 - 一個交互式終端,它運行在斷點所在方法的上下文中。這使您可以打印成員,調用其他方法並查看結果,並重新定義方法以嘗試修復錯誤。涼。如何在Python中實現調試控制檯?

誰能告訴我這是如何實現的?我知道有Code模塊,它提供了一個InteractiveConsole類,但我不知道如何在當前加載的代碼的上下文中運行它。我對Python很陌生,所以我們會很感激你的幫助!

回答

3

對,我很慚愧地承認它實際上是在InteractiveConsole的文檔中。通過將locals()函數的結果傳遞給InteractiveConsole構造函數,可以使其在本地上下文中運行。我無法找到關閉InteractiveConsole而不殺死應用程序的方式,因此我將它擴展到僅在關閉控制檯時才捕獲SystemExit異常。我不喜歡它,但我還沒有找到更好的方法。

下面是一些演示調試控制檯的示例代碼(相當簡單)。

import code 

class EmbeddedConsole(code.InteractiveConsole): 
    def start(self): 
     try: 
      self.interact("Debug console starting...") 
     except: 
      print("Debug console closing...") 

def print_names(): 
    print(adam) 
    print(bob) 

adam = "I am Adam" 
bob = "I am Bob" 

print_names() 
console = EmbeddedConsole(locals()) 
console.start() 
print_names() 
6

你可以試試看python調試器pdb。它就像gdb一樣在使用它,但是在純python中實現。在python安裝目錄中查找pdb.py。

0

Python在bdb module中有一個調試器框架。我不確定IDE的列表是否使用它,但肯定有可能用它來實現一個完整的Python調試器。

0

如果你想用自己的Python控制檯試驗,那麼這是一個良好的開端:

cmd = None 
while cmd != 'exit': 
    cmd = raw_input('>>> ') 
    try: 
     exec(cmd) 
    except: 
     print 'exception' 

但對於實際工作使用InteractiveConsole代替。

相關問題