下面是一些示例代码,以提供我想要的内容。有没有办法在运行时访问调试符号?
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()
和get_caller_line()
的方法吗?我已经看到/使用了像#define
ing my_api_call
这样的技巧作为在__FILE__
和__LINE__
宏中传递的函数调用。我想知道是否有一种方法可以在运行时而不是编译时访问这些信息(假设它存在)? Valgrind不会像这样做,以获得它返回的信息吗?
+1。如果我没有看到它,这是我回答的一半。另一半是Windows的可执行文件,你可以使用DbgHelp.lib(aka DebugHelp)来查看。请参阅http://msdn.microsoft.com/en-us/library/ms679309(VS.85).aspx – 2010-09-22 19:22:36