
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
学源码,单步跟踪遇到个难题
-
单步跟踪的时候,跟踪到 tools/safe_eval.py 的 242 行
return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
这个 eval 调用就跟不过去,直接跳飞了。
调用栈是这样的
[attachimg=1]
中间跑到
[attachimg=2]
不知道哪里去了,但是 我需要跟踪的东西就在这里面
咋回事呢 ? -
自己学习了一下,
test_expr(expr,_SAFE_OPCODES, mode=mode) 返回的是一个 Python 代码对象 (code object) ,就是 一小段 python 代码编译的结果。这“一小段 python 代码”就是各种 domain,报表中的表达式,系统里所有允许输入的python 代码
而 eval 就是负责执行这个编译后的 代码对象,
所以,单步跟踪进入 eval 后就飞掉了。
但是这 代码对象里面的 代码,还是 要调用 系统中的模块。各种对象,各种方法,
这之间 怎么 关联起来的?待继续学习
哪位大大 指点一下 ? -
eval 是python的内置方法吧。你可以看输入到eval的参数能知道他到底执行了啥。