,查看局部變量我無法弄清楚如何檢查使用我猜測它涉及到用行走和getinnerframe的getouterframe框架層次當前正在執行的功能inspect/inspect_shell使用python檢查的功能
,但我在幾個問題上感到困惑。
鑑於這種例子 nine.py:
import inspect_shell
import time
def number_nine():
x = 9
while x==9:
time.sleep(1)
number_nine()
print x
我想檢查的x
值或甚至可能改變它導致返回並打印新的價值功能。
首先我啓動nine.py,然後在一個單獨的命令窗口中使用inspect_shell,我看到getinnerframes
在當前幀上不起作用(它需要一個跟蹤(可能?)),而當前幀沒有「跟蹤」。和getouterframes
(如果我正在考慮這個倒退)似乎只能得到與我的功能無關的幀。在 'nine.py'
:
>> Inspect Shell v1.0
>> https://github.com/amoffat/Inspect-Shell
localhost:1234> import inspect
localhost:1234> f = inspect.currentframe()
localhost:1234> inspect.getinnerframes(f)
Traceback (most recent call last):
File "C:\Users\Paul\Desktop\inspect_shell.py", line 143, in run_repl
try: exec compile(data, "<dummy>", "single") in f_globals, f_globals
File "<dummy>", line 1, in <module>
File "C:\Python26\lib\inspect.py", line 942, in getinnerframes
framelist.append((tb.tb_frame,) + getframeinfo(tb, context))
AttributeError: 'frame' object has no attribute 'tb_frame'
localhost:1234> dir(f)
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__',
'__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'f_back', 'f_builtins',
'f_code', 'f_exc_traceback', 'f_exc_type', 'f_exc_value', 'f_glo
bals', 'f_lasti', 'f_lineno', 'f_locals', 'f_restricted', 'f_trace']
localhost:1234> print f.f_trace
None
localhost:1234> inspect.getouterframes(f)
[(<frame object at 0x0237D470>, '<dummy>', 1, '<module>', None, None),
(<frame object at 0x02375938>, 'C:\\Users\\Paul\\Desktop\\inspect_shell.py', 14
3, 'run_repl', [' try: exec compile(data, "<dummy>", "single") in
f_globals, f_globals\n'], 0), (<frame object at 0x023A2C30>, 'C:\
\Python26\\lib\\threading.py', 484, 'run',
[' self.__target(*self.__args, **self.__kwargs)\n'], 0),
(<frame object at 0x02397F28>, 'C:\
\Python26\\lib\\threading.py', 532, '__bootstrap_inner',
[' self.run()\n'], 0), (<frame object at 0x023A9D68>,
'C:\\Python26\\lib\\thre
ading.py', 504, '__bootstrap', [' self.__bootstrap_inner()\n'], 0)]
在我的例子nine.py已經運行(注意while循環),我需要檢查該過程。 Inspect_shell應該通過套接字公開所有進程。 (請參閱inspect_shell文檔的鏈接)我無法停止並重新編譯我的現實世界問題的任何部分。我試圖讓我的問題更清楚。感謝您的答覆。 – Paul 2012-01-04 23:02:19