DIY堆栈保护
我有一个 C++ 的 Android NDK 项目。客户抱怨间歇性的、不可重现的故障。我怀疑某处存在内存损坏错误。我已经有一个 malloc 屏障;现在我想检查堆栈是否损坏。
GCC 的 -fstack-protector 对我来说听起来太极端了;当它检测到错误时,它只会杀死程序;我想要一些更用户友好的东西(一条消息,然后杀死:))。问题 - 有没有办法在 GCC 下实现程序员控制下的堆栈一致性检查器?我不介意内联汇编。
例如,一些公开堆栈帧结构的预定义宏会派上用场。
I have a Android NDK project in C++. Customers are complaining of intermittent, irreproducible glitches. I suspect a memory corruption bug somewhere. I already have a malloc barrier; now I want to check for stack corruption.
GCC's -fstack-protector sounds too extreme to me; when it detects a bug, it just kills the program; I want something more user-friendly (a message, THEN kill :)). Question - is there a way to implement, under GCC, a stack consistency checker under programmer's control? I don't mind inline assembly.
Some predefined macros that expose the stack frame structure, for example, would come in handy.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请参阅此问题的最上面的答案,了解为什么
stack-protecter
用于强化而不是调试:何时以及如何使用 GCC 的堆栈保护功能?See the top-most answer to this question, on why
stack-protecter
is for hardening, and not debugging: When and how to use GCC's stack protection feature?