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的参数能知道他到底执行了啥。


Log in to reply