代码之家  ›  专栏  ›  技术社区  ›  LB40

如何使用“cyg_profile_func_exit”获取返回值?

  •  2
  • LB40  · 技术社区  · 15 年前

    这些函数是具有两个参数(当前函数的地址)的'uu cyg_profile_func_enter和'uu cyg_profile_func_exit;enter的第二个参数是调用站点的地址,exit是它返回的地址。

    是否有方法获取插入指令的函数实际返回的值?

    1 回复  |  直到 15 年前
        1
  •  1
  •   amaterasu    15 年前

    据我所知,为了得到返回值,使用uucyg_profile_ufunc_exit,我们需要将优化标志设置为-O0,iirc,由于-O0将返回值存储在ebx中,而更高的优化标志将返回值存储在eax中,因此它不适用于高于此的优化程度;之后给eip打电话。因此,为了避免ebx被instrumentation函数杀死,我们在进入函数时保存它,在分离时恢复它。

    我希望这有帮助,祝你好运。