2009-11-10 48 views
2

使用Visual Studio IDE中的c#,我可以隨時暫停程序並觀察其變量,檢查我想要的任何內容。我注意到,使用Komodo IDE時,當某些事情崩潰並且停止了程序流程時,我可以做同樣的事情。但出於某種原因,似乎在我手動暫停程序時嘗試執行相同操作時,同樣無法實現。我做錯了什麼,或者只是不可能?在後面的情況下,有誰可以關心解釋我爲什麼?它是IDE相關還是Python相關?科莫多 - 觀察變量並在程序中暫停時執行代碼

感謝

編輯:其他的問題,我該怎麼再繼續該計劃?根據我所看到的,在我調用code.interact(local = locals())之後,它的行爲與程序仍在運行,因此我無法單擊「運行」按鈕,只能在「暫停」或「關閉」上單擊。

回答

3

如果你把

import code 
code.interact(local=locals()) 

在你的程序,那麼你將被轉儲到Python解釋器。 (請參閱Method to peek at a Python program running right now

這與暫停科莫多有點不同,但也許您可以使用它來實現相同的目標。

按下Ctrl-d退出Python解釋器並允許程序恢復。

import traceback 
traceback.extract_stack() 

例如,下面是它打印調用堆棧一個裝飾:

def print_trace(func): 
    '''This decorator prints the call stack 
    ''' 
    def wrapper(*args,**kwargs): 
     stacks=traceback.extract_stack() 
     print('\n'.join(
      [' '*i+'%s %s:%s'%(text,line_number,filename) 
      for i,(filename,line_number,function_name,text) in enumerate(stacks)])) 
     res = func(*args,**kwargs) 
     return res 
    return wrapper 

使用方法如下:

您可以使用追溯模塊檢查調用堆棧

@print_trace 
def f(): 
    pass 
+0

這正是我想要的,但我注意到它似乎沒有調用堆棧:( – 2009-11-10 21:57:59

+1

我編輯了我的回覆t o解決調用堆棧問題並使用ctrl-d恢復。 – unutbu 2009-11-11 13:02:01