Я написал 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
или т.п .; sys.settrace
Python останавливается на каждой строке, но это все. Я мог бы решить эту проблему, выполнив отдельные коды операций и прочитав стек фрейма ... но как я могу сделать , что ?
Есть ли способ пройти через отдельные коды операций (в отличие от строк) в Python?