Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C __内置返回地址为索引返回null>;0?_C_Linux_Linux Kernel_Linux Device Driver - Fatal编程技术网

C __内置返回地址为索引返回null>;0?

C __内置返回地址为索引返回null>;0?,c,linux,linux-kernel,linux-device-driver,C,Linux,Linux Kernel,Linux Device Driver,我想获取调用方函数的返回地址。我使用的是\u内置\u return\u address()函数,但如果我给索引值大于0,它将返回NULL 请帮我解决这个问题,或者告诉我其他任何函数可以达到同样的效果。请参阅相关问题 是特定于和处理器的(在某些版本中,在某些缺少优化的处理器上也可以使用),并记录为 在某些机器上,可能无法确定除当前函数之外的任何函数的返回地址 编译器可能会在没有相关信息的情况下优化函数(例如,当使用-fomit frame pointer或for或by function编译函数时)

我想获取调用方函数的返回地址。我使用的是
\u内置\u return\u address()
函数,但如果我给索引值大于0,它将返回
NULL

请帮我解决这个问题,或者告诉我其他任何函数可以达到同样的效果。

请参阅相关问题

是特定于和处理器的(在某些版本中,在某些缺少优化的处理器上也可以使用),并记录为

在某些机器上,可能无法确定除当前函数之外的任何函数的返回地址

编译器可能会在没有相关信息的情况下优化函数(例如,当使用
-fomit frame pointer
或for或by function编译函数时)


因此,您可能会得到
NULL
,因为信息不可用

除了编译器优化的原因(IMO是您面临的问题最可能的原因)之外,还明确指出:

使用非零参数调用此函数可能会产生不可预测的影响,包括使调用程序崩溃。因此,当
-Wframe address
选项生效时,将诊断被视为不安全的调用。此类调用只能在调试情况下进行

正如Basile所说,由于它是一个编译器内置(读:非常特定于处理器,使用起来很糟糕),因此该行为的定义非常松散(因为它不是任何标准所要求的,也不需要做出任何保证)


只需使用,它与POSIX兼容,不依赖编译器内置。

为什么要使用它?您的目标是什么?“此函数应仅与非零参数一起用于调试目的。”如果您需要堆栈跟踪,还有其他可用函数。@重复数据消除程序我需要存储调用方函数的返回地址。请解释您的问题的动机。为什么需要调用方函数的返回地址?你打算用它做什么?请显示更多代码,编辑您的问题。谢谢!!您是否可以告诉我其他函数的返回地址,这些函数不是特定于处理器的,也不是在ARMv7上工作的。这些信息可能不可用。所以没有办法得到不存在的东西。