从调试器执行单个操作码

时间:2018-05-09 17:46:23

标签: python-3.x debugging bytecode pdb cpython

我已经写了一个sys.settrace函数:

import sys
def tracefunc(frame, event, arg):
    if event == 'call':
        if '__debug_me__' in frame.f_code.co_names:
            return tracefunc
        return None
    if frame is not None:
        print(event, frame.f_code, frame.f_lasti)
        # I am stuck here

每当遇到STORE_NAME时,我想做类似的事情:

print(frame.f_code.co_names[namei], old_val, new_val)

但是我无法想到任何可以证明这一点的方法:

x=1;y=2;z=3

等; Python的sys.settrace会在每一行停止,但就此而言。我可以通过执行单个操作码并读取帧的堆栈来解决这个问题......但是我该怎样做

有没有办法在Python中逐步执行单个操作码(而不是行)?

0 个答案:

没有答案