Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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
Android 用特定值填充所有可用堆栈_Android_C++_Arm - Fatal编程技术网

Android 用特定值填充所有可用堆栈

Android 用特定值填充所有可用堆栈,android,c++,arm,Android,C++,Arm,我需要用特定的字符填充所有可用的堆栈空间,以便进行分析 首先,在Android上有一个安全的方法(C++中可能有一些编译器特定的功能)吗?如果不是,我可以假设函数中声明的第一个变量的地址是“未使用”堆栈的“开始”吗?如果没有办法获取当前堆栈指针,比如x86上的ESP值?使用ARM,您需要考虑调用约定,因为具有四个以上参数的函数会将它们溢出到堆栈中。我发现使用起来更安全 使用ARM时,您需要考虑调用约定,因为一个具有四个以上参数的函数会将它们溢出到堆栈中。我发现使用起来更安全 事实上,在看了我的文

我需要用特定的字符填充所有可用的堆栈空间,以便进行分析


首先,在Android上有一个安全的方法(C++中可能有一些编译器特定的功能)吗?如果不是,我可以假设函数中声明的第一个变量的地址是“未使用”堆栈的“开始”吗?如果没有办法获取当前堆栈指针,比如x86上的ESP值?

使用ARM,您需要考虑调用约定,因为具有四个以上参数的函数会将它们溢出到堆栈中。我发现使用起来更安全


使用ARM时,您需要考虑调用约定,因为一个具有四个以上参数的函数会将它们溢出到堆栈中。我发现使用起来更安全


事实上,在看了我的文章后,我想这对你的问题有一个答案。你需要澄清你所说的所有可用堆栈空间是什么意思?根据某些特定功能,所有功能?所有程序空间?多线程?更一般地说@auselen在入口点函数中创建新线程时,我想用特殊值填充所有堆栈,以便以后能够检测堆栈的使用量。是否检查了堆栈保护器的内容?GCC也有一个选项:)
-fstack usage
,但我希望您能想象,在运行时计算堆栈的总使用量是很困难的。事实上,在仔细研究之后,我发现,对于您的确切问题,我有一个答案。您需要澄清所有可用堆栈空间是什么意思?根据某些特定功能,所有功能?所有程序空间?多线程?更一般地说@auselen在入口点函数中创建新线程时,我想用特殊值填充所有堆栈,以便以后能够检测堆栈的使用量。是否检查了堆栈保护器的内容?GCC也有一个选项:)
-fstack usage
,但我希望您可以想象,在运行时很难计算堆栈的总使用量。不幸的是,Android无法使用此函数:|@Felics这是一个内置的GCC函数,它也应该在NDK工具链中。顺便说一句,我刚刚验证了它与NDKR9B一起工作。在Android(arm-linux-AndroidABI-4.6工具链)上,它不见了…@Felics不可能。你能发布错误消息吗?我是Soooo noob:)我在函数名中有一个。谢谢不幸的是,这个函数不适用于Android:|@Felics这是一个内置的GCC函数,它也应该在NDK工具链中。顺便说一句,我刚刚验证了它与NDKR9B一起工作。在Android(arm-linux-AndroidABI-4.6工具链)上,它不见了…@Felics不可能。你能发布错误消息吗?我是Soooo noob:)我在函数名中有一个。谢谢
Built-in Function: void * __builtin_frame_address (unsigned int level)