您能否提供任何示例如何验证函数 X() 是从函数 Y() 而不是从函数 Z() 调用的?
使用“C”或汇编语言?
提前致谢。
更新:02-03-2015
假设内核源代码有很多驱动程序调用相同的函数,例如 SPI(串行外围接口)和 GPIO(通用输入输出)的驱动程序源代码正在调用相同的函数,例如“bzero()”。
void bzero(void *s, size_t n);
我要测试SPI和GPIO驱动(驱动代码不能修改)。为此,我编写了测试驱动程序。我只能调用从我的测试驱动程序中公开的函数。
uint8_t SPI_read_write(uint8_t byte_out, char *s) // 函数 1 { bzero(s,sizeof(struct_global1)); 返回字节输入;}
uint8_t GPIO_read_write(uint8_t byte_out, char *s)// 函数2 { bzero(s,sizeof(struct_global2)); 返回字节输入;}
int main()// 测试驱动 { SPI_read_write(arg1,arg2);// 当我从测试驱动调用这个函数时,它会调用 bzero
}函数 SPI_read_write() 和 GPIO_read_write() 函数都调用“bzero”函数。我需要确保仅在任何实例中从 SPI_read_write() 函数调用“bzero”。
更新 15-04-2017
我无法得到哪条线不清楚?一些函数 fun1() 可以从 N 个其他函数中调用。如何确定调用 fun1() 的函数?
可能它与堆栈,链接寄存器有关......