Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    学源码,单步跟踪遇到个难题

    Odoo 开发与实施交流
    2
    4
    2457
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • C
      ccdos 最后由 编辑

      单步跟踪的时候,跟踪到 tools/safe_eval.py 的 242 行

          return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict)

      这个 eval 调用就跟不过去,直接跳飞了。

      调用栈是这样的

      [attachimg=1]

      中间跑到

      [attachimg=2]

      不知道哪里去了,但是 我需要跟踪的东西就在这里面

      咋回事呢 ?

      1 条回复 最后回复 回复 引用 0
      • C
        ccdos 最后由 编辑

        自己学习了一下,
        test_expr(expr,_SAFE_OPCODES, mode=mode)  返回的是一个  Python 代码对象 (code object)  ,就是 一小段 python 代码编译的结果。这“一小段 python 代码”就是各种 domain,报表中的表达式,系统里所有允许输入的python 代码

        而 eval 就是负责执行这个编译后的 代码对象,

        所以,单步跟踪进入 eval  后就飞掉了。

        但是这 代码对象里面的 代码,还是 要调用 系统中的模块。各种对象,各种方法,
        这之间 怎么 关联起来的?待继续学习

        哪位大大 指点一下 ?

        1 条回复 最后回复 回复 引用 0
        • Joshua
          Joshua 管理员 最后由 编辑

          eval  是python的内置方法吧。你可以看输入到eval的参数能知道他到底执行了啥。

          【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

          1 条回复 最后回复 回复 引用 0
          • First post
            Last post