跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 学源码,单步跟踪遇到个难题

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

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
4 帖子 2 发布者 3.0k 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    ccdos
    发表于 最后由 编辑
    #1

    单步跟踪的时候,跟踪到 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 离线
      C 离线
      ccdos
      发表于 最后由 编辑
      #2

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

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

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

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

      哪位大大 指点一下 ?

      1 条回复 最后回复
      0
      • JoshuaJ 离线
        JoshuaJ 离线
        Joshua
        管理员
        发表于 最后由 编辑
        #3

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

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

        1 条回复 最后回复
        0

        你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

        厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

        有了你的建议,这篇帖子会更精彩哦 💗

        注册 登录
        回复
        • 在新帖中回复
        登录后回复
        • 从旧到新
        • 从新到旧
        • 最多赞同


        • 登录

        • 没有帐号? 注册

        • 登录或注册以进行搜索。
        • 第一个帖子
          最后一个帖子
        0
        • 版块
        • 标签
        • 热门
        • 用户
        • 群组