首页 / LINUX / Linux C调试库检测内存损坏
Linux C调试库检测内存损坏
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux C调试库检测内存损坏,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1038字,纯文字阅读大概需要2分钟。
内容图文
![Linux C调试库检测内存损坏](/upload/InfoBanner/zyjiaocheng/961/804d89c9a6de4da884909c1044df0500.jpg)
有时以前在带有简单MMU的嵌入式系统上工作时,我曾经动态编程这个MMU以检测内存损坏.
例如,在运行时的某个时刻,foo变量被一些意外数据覆盖(可能是通过悬空指针或其他任何东西).所以我添加了额外的调试代码:
>在init时,foo使用的内存被指示为MMU的禁区;
>每当foo被故意访问时,就可以在之前禁止访问该区域;
>添加了MMU irq处理程序以转储主服务器和负责违规的地址.
这实际上是某种观察点,但直接由代码本身自行处理.
现在,我想重用相同的技巧,但在x86平台上.问题是我很难理解在这个平台上如何使用MMU,以及Linux如何使用它,但我想知道是否已经存在任何库/工具/系统调用来处理这个问题.
请注意,我知道存在各种工具,如Valgrind或GDB来管理内存问题,但据我所知,这些工具都不会被调试代码动态重新配置.
我主要对Linux下的用户空间感兴趣,但也欢迎任何关于内核模式或Windows下的信息!
解决方法:
您可以使用mmap(MAP_ANONYMOUS)和mprotect函数来操作虚拟内存系统并使用相应的保护标志.当然,您的变量需要约束到系统页面大小的倍数.许多小变量将带来巨大的开销.
当然,在管理内存区域的访问权限时,您的应用程序需要正常工作.您还需要使用mmap()而不是malloc作为受保护区域.
这是MMU的用户空间接口层,以相对便携的方式.
内容总结
以上是互联网集市为您收集整理的Linux C调试库检测内存损坏全部内容,希望文章能够帮你解决Linux C调试库检测内存损坏所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。