UNIX调试工具与进程信号机制深度解析
1. 动态内存分配调试工具
在使用动态分配内存时,可能会遇到各种问题,如重复释放内存块、非法内存访问等。为了帮助诊断这些问题,有一些实用工具可供使用。
1.1 ElectricFence
ElectricFence是由Bruce Perens开发的库,在一些Linux发行版(如RedHat)中作为可选组件提供,也可在互联网上轻松找到。它尝试利用UNIX的虚拟内存功能来保护 malloc 和 free 使用的内存,旨在在内存损坏时停止程序。
以下是一个示例程序 efence.c ,它使用 malloc 分配一个内存块,然后向该块的末尾之外写入数据:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *ptr = (char *) malloc(1024);
ptr[0] = 0;
/* Now write beyond the block */
ptr[1024] = 0;
exit(0);
}
当我们编译并运行这个程序时,可能看不到异常行为,但很可能 malloc 分配的内存区域已经受到了损坏,最终可能会遇到问题。
$ cc -o efence efence
超级会员免费看
订阅专栏 解锁全文
2595

被折叠的 条评论
为什么被折叠?



