python-3.x - 从调试器执行单个操作码
问题描述
我写了一个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
遇到 a 时,我想做类似的事情:
print(frame.f_code.co_names[namei], old_val, new_val)
但我想不出任何可以证明这一点的方法:
x=1;y=2;z=3
或类似的;Pythonsys.settrace
在每一行都停止,但仅此而已。我可以通过执行单个操作码并读取帧的堆栈来解决这个问题......但我该怎么做呢?
有没有办法在 Python 中单步执行单个操作码(而不是行)?
解决方案
推荐阅读
- c++ - C++ raytracer ppm 表示没有足够的数据来显示图像
- python - 如何将 asarray 的输出转换回 Python 中的普通数组?
- spring - 从 Spring 2.5 中基于 SimpleFormController 的实现迁移到 Spring 4 中基于注释的控制器
- angular - 上下文菜单上的文件元素未定义 - 为什么?
- php - 我的表单总是告诉用户有问题
- sql - 如何提取与特定模式匹配的所有字符串并在 SQL 中爆炸为行
- algorithm - 将数组分成两部分(某些元素可以单独保留),使得两部分之和最大
- ios - 使用 LanguageManager-iOS-Lokalise0.1.3 在单击按钮上不会更改 IOS 应用程序语言
- python - 如何将从实时方法调用接收的字节 jpeg 数据转换为可读/可管理的格式
- tensorflow - 从 anaconda 安装中导入 jupyter 和 sypder 中的 tensroflow 时遇到问题