這是關於Pycharm 4.5.1的。Pycharm:在交互式調試控制檯中覆蓋函數變量
每當我在函數處停止斷點時,我無法在交互式python控制檯中覆蓋或創建函數中定義的任何變量(無論這些函數變量是在斷點之前還是之後定義)。
相比之下,當我的調試點不在函數內時,我可以覆蓋當前腳本中定義的任何變量。這是一個錯誤或預期的行爲?無論如何,這讓我發瘋,因爲它讓任何交互式的斷點引導發展幾乎不可能。
我的問題:有什麼辦法可以解決Pycharm中這個惱人的行爲嗎?
極小例
>>>指我輸入的交互式調試控制檯,等我到了指定的斷點。
這工作:
a = 3 # <- put breakpoint here
>>>一個= 4
>>>一個
缺貨[7]:4
這工作:
def test():
a = 3 # <- put breakpoint here
test()
>>> B = 4
>>> b
缺貨[7]:4
這不起作用:
def test():
a = 3 # <- put breakpoint here
test()
>>>一個= 4
>>> a
回溯(最近通話最後一個):
文件 「/redacted/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py」,線3035,在run_code EXEC(code_obj, self.user_global_ns,self。user_ns)
文件 「< IPython的輸入-5-5cd59f58ac08>」,第1行,在<模塊>
一個
NameError:名稱 'A' 沒有定義
這不起作用:
def test():
a = 3
print('just for the sake of placing a breakpoint') # <- put breakpoint here
test()
>>>一個= 4
>>>一個
出[7]:3
感謝,將工作作爲一個變通!這樣做還是有點麻煩。如果人們可以在所謂的「交互式」控制檯中重新分配變量,那將會容易得多。 – monade
我個人不是他們整體調試設置的粉絲。 – Leb
是的,我也是。您是否知道任何具有可比較功能(\ *)的IDE,但更好,可能是類似Matlab的調試功能? (\ *)好吧,我知道,這非常含糊 - 但是與Pycharm類似的代碼內省將是一個開始。 – monade