C语言 Linux 获取调用者函数名称

来源:百度知道 编辑:UC知道 时间:2024/05/13 09:59:09
我现在是在Linux下面,用的是C语言,并且我现在是在写一个函数(仅仅是一个函数),我现在想要知道调用我的函数的名称(事先不知道,并且别人不会以参数的形式告诉),我不知道这个里面应该怎么实现了,我看了一下backtrace,但是始终获取到得都是这个函数的地址。我就像获取函数名称

本来我自己也认为函数名称在编译连接之后已经不存在了,但是我们老师说有办法获取到,我就不知道怎么实现了,希望谁知道可以不吝赐教,谢谢
现在问题明白了,我知道可以用_FUNCTION_ 这个宏,但是 比如我的函数是 int aa(int a ,_FUNCTION_);这个时候每次都需要调用者去输入“_FUNCTION_” 我在想有没有办法可以不让别人输入“_FUNCTION_” 这个样子 以前没有处理过这种问题,就相当于我的函数有个默认的参数,你不需要输入某些东西就相当于输入了某些东西 这样不是很好吗?

——FUNCTION—— ——FILE—— ——LINE——都是可以用的噢

兄弟啊,我也认为编译后函数名就不存在了,要是函数名存在,还要指针什么的干什么,直接找名字不就行了,一旦可执行体完成连接,里面的符号就都没有了,我很奇怪你们老师有什么高招,要是真的能行,一定别忘了分享一下啊,我也很想知道。
在反汇编的时候,从来没见过什么符号名称,都是地址,我只知道在Windows的PE文件里有导出表,可这也不能解决你提出的问题,假设你的问题有解,说不定还能对反编译有帮助,关注ing

谢谢楼主的解答,学习了

曾祥林

可以通过gprof效能分析工具实现,具体使用方法请参考以下页面:

http://os.51cto.com/art/200703/41426.htm