gpt4 book ai didi

c - 如何在 Linux 上调试内存损坏

转载 作者:太空狗 更新时间:2023-10-29 15:42:04 25 4
gpt4 key购买 nike

我的 C 应用程序中遇到了非常智能的内存损坏问题。

高负载时会发生损坏。

所以我尝试了 purify、valgrind、mprotected,还尝试编写自己的简单保护机制。

Purify/Valgrind - 没有帮助,因为它降低了我的应用程序的性能并且问题没有重现。

mprotected 用法只是将损坏移动到其他内存位置。 (因为它需要将内存与页面大小对齐)。

我的简单保护机制不起作用,因为它还会降低性能。

如何在不降低性能的情况下调试我的应用程序?

最佳答案

如果您有 64 位,您可以使用始终执行 mmap() 的自定义 malloc() 和始终执行 mmap() 的自定义 free()在同一内存上执行 munmap() 和另一个 mmap()。用互斥量保护这些东西以避免致命的竞争条件。这会将首次访问已释放内存时的行为更改为故障。

如果没有找到,调整自定义的malloc(),将分配的缓冲区移动到映射区域中尽可能高的位置。

请注意,您不能在 32 位中执行此操作,因为这会疯狂地消耗地址空间。

关于c - 如何在 Linux 上调试内存损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19448412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com