如何知道某个函数被是被谁调用的?
Linux 内核:可通过dump_stack()分析
dump_stack()使用方法_yanlaifan的博客-CSDN博客_dump_stack
linux内核中打印栈回溯信息 - dump_stack()函数分析_落尘纷扰的博客-CSDN博客_dump_stack
应用程序:使用 __builtin_frame_address()、__builtin_return_address()分析
__builtin_return_address(LEVEL)函数解释和运行实战_小可爱amour的博客-CSDN博客___builtin_return_address
通过__builtin_return_address()获取函数地址后,再到到函数表中根据函数地址查找到对应的函数名即可,两种方式
1. gdb方式查找函数表( gdb 根据函数地址 找 对应的函数名 - 知乎、gdb查看内存地址和栈中的值—查看虚函数表、函数地址_ztguang的博客-CSDN博客_gdb查看内存地址和栈中的值 )
(gdb) info symbol 0x9e250 //通过地址查找函数名
(gdb) info address func_name //通过函数名查找地址
2.readelf 命令方式查看函数表