如何获取调用者的文件名和行号而不将其作为参数传递?

时间:2012-09-24 18:06:19

标签: c++ java-native-interface

我有三个文件foo1foo2foo3

foo2foo3调用foo1中的函数。

我试图让foo1检测调用者的文件名和行号,而不将这些作为参数传递给函数。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

这是高度依赖平台和编译器的,通常无法完成。您的系统可能具有扩展名,例如GNU backtrace函数。

答案 1 :(得分:1)

运行本机程序时,文件和行的概念不再存在。该程序只是处理器的命令流 - 函数,变量,行号,文件名的名称,在编译期间都丢失了。

从程序中提取调试信息几乎是不可能的。必须专门编译该程序以附加调试信息。有时(如Visual C ++),调试信息被提取到一个单独的文件中 - 但您需要该文件并知道其格式,以提取该信息。而你只会获得调试信息。不是编译的代码。

参数是要走的路。