python - 如何识别跟踪中的每条指令访问(读取和/或写入)哪些变量?
问题描述
我正在尝试从 Python 代码的跟踪中构建依赖关系图。(我知道我不会有完整的信息)以代码片段为例:
L1: a = 1
L2: b = 2
L3: c = a + b
L4: d = a + 2 + c
依赖图每条线有一个节点,并包含以下边(很抱歉没有提供图的图像)。每条边都意味着数据依赖。例如,在 L3c
中使用 计算a
,因此边缘 L1 -> L3
L1 -> L3
L2 -> L3
L1 -> L4
L3 -> L4
我打算使用sys.settrace(trace)
. 正在为每条指令调用函数跟踪。我需要确定的是在每条指令中读取和/或写入了哪些变量。使用该(部分)信息,我可以构建依赖关系图(仅针对该特定跟踪更正)。
在跟踪函数中,我可以访问堆栈帧和局部变量。通过跟踪每个变量的值,我可以检查对变量的写入。然而,这是非常昂贵的。但是我在堆栈框架中找不到任何可以帮助我识别读取的内容。
总结一下,我的疑问是:
如何识别对变量的读取和/或写入?
我选择使用
sys.settrace()
正确,还是应该检查一些不同的工具?
编辑:我知道使用跟踪只会给我一个不完整的场景。但是,来自跟踪的依赖关系图将适用于我的情况。
解决方案
推荐阅读
- qt - Qml FolderListModel 无法访问共享文件夹
- powershell - PowerShell IComparable 与子类
- neo4j - 在 Neo4j 中查询不存在的标签时,MyBatis 映射器永远不会返回
- flask - 烧瓶登录重定向回登录页面
- node.js - 在 AWS Lambda 中共享代码
- c# - 使用 Where 谓词过滤 detail.List 与另一个列表
- phonegap - PhoneGap:如何在 index.html 启动之前删除 Hello 字屏幕
- php - 如何循环通过 3 维数组将数据插入数据库?
- amazon-web-services - 我的 AWS Elastic Beanstalk 应用程序消失了
- javascript - RequireJS 的配置以咨询 node_modules?