如何使用__cyg_profile_func_exit获取返回的值?

时间:2009-08-20 18:41:57

标签: c gcc profiling

使用gcc中的仪器功能标志,您可以检测代码以在每次执行功能之前和之后执行功能。 这些函数是__cyg_profile_func_enter和__cyg_profile_func_exit,带有两个参数,即当前函数的地址; enter的第二个参数是调用站点的地址,并用于退出返回的地址。

有没有办法获得仪表函数实际返回的值?

1 个答案:

答案 0 :(得分:1)

据我所知,(并且绝不引用我这个)为了获得返回值,使用__cyg_profile_func_exit我们需要将我们的优化标志设置为-O0,iirc,它不适用于度数由于-O0将返回值存储在ebx中,更高优化标志将返回值存储在eax中,因此优化高于此值;之后叫eip。因此,为了避免ebx被仪器功能杀死,我们在输入函数时保存它,并在我们分开时恢复它。

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