我尝试将剖析器构建到某个c项目。 我希望gcc在编译时在所有的函数入口和函数出口点中植入一些汇编指令。 我尝试在网上搜索一些指南,但没有成功。 我可以在哪里学习如何做到这一点?我如何在通过gcc函数的序幕和尾声中安装汇编指令
提前致谢。
我尝试将剖析器构建到某个c项目。 我希望gcc在编译时在所有的函数入口和函数出口点中植入一些汇编指令。 我尝试在网上搜索一些指南,但没有成功。 我可以在哪里学习如何做到这一点?我如何在通过gcc函数的序幕和尾声中安装汇编指令
提前致谢。
显然,你可以使用-finstrument-functions
标志让gcc生成仪器在函数入口和出口要求
void __cyg_profile_func_enter(void *func, void *callsite);
void __cyg_profile_func_exit(void *func, void *callsite);
还要注意'no_instrument_function'属性,它可以用于cyg_profile函数本身以防止无限递归。 – ugoren 2013-02-13 11:49:24
绝对 - 我强烈建议事先处理在线文档和示例 - 正如我所说的,从来没有亲自使用它,但它确实看起来像可能存在一些隐藏的陷阱它! – Michael 2013-02-13 12:01:42
谢谢,它的作品.... – user2066340 2013-02-13 12:51:20
除非你想修改gcc
(这是不平凡的!),我会认为有两个相当明显的方法。
显然,修改gcc
的选项也有可能,但是编译器代码是相当复杂的,除非你基本上把所有的现有挂钩gprof
,我不认为这是一个学校项目 - 除非你正在去博士或其他类似的途中。
使用gperf怎么样? – JosephH 2013-02-13 10:00:32
我想构建分析器 - 这是我的学习项目:) – user2066340 2013-02-13 10:14:58