方法一
使用 LD_PRELOAD 字段的预加载方式
LD_PRELOAD=/usr/lib/libxsmemcheck.so mem-test
xsmemcheck.so 参考实现代码如下
void *malloc(size_t size)
{
if (THIS->real_malloc == NULL) THIS->real_malloc = dlsym(RTLD_NEXT, "malloc");
struct timespec tv;
clock_gettime(CLOCK_MONOTONIC, &tv);
void *ret = THIS->real_malloc(size);
fprintf(stderr, "%02ld:%02d:%02d.%06ld [%ld:%lx] xsmemcheck malloc size %ld result "FMT_P"\n", (tv.tv_sec/3600) % 24 ,(int)((tv.tv_sec/60) % 60),(int)(tv.tv_sec % 60),tv.tv_nsec / 1000, getpid(), pthread_self(), size, ret);
return ret;
}

本文介绍了在嵌入式系统中,特别是在Linux和Unix环境下,如何替换标准库Glibc中的malloc函数。通过使用预加载机制,可以实现自定义内存管理方案,如xsmemcheck.so提供的参考实现。文章提供了详细的方法一,并提到了其他五种替代方法。
397

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



