这是一些示例代码,可以让您了解我想要的内容。
int regular_function(void)
{
int x,y,z;
/** do some stuff **/
my_api_call();
return x;
}
...
void my_api_call(void)
{
char* caller = get_caller_file();
int line = get_caller_line();
printf("I was called from %s:%d\n", caller, line);
}
有没有办法实现get_caller_file()
and get_caller_line()
?我见过/使用过类似的技巧#define
ing my_api_call
作为传入的函数调用__FILE__
and __LINE__
宏。我想知道是否有一种方法可以在运行时而不是编译时访问该信息(假设它存在)?像 Valgrind 这样的东西难道不需要做这样的事情才能获取它返回的信息吗?
如果您使用调试符号编译了二进制文件,则可以使用特殊库访问它,例如libdwarf http://reality.sgiweb.org/davea/dwarf.html用于 DWARF 调试格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)