监控malloc时brk系统调用

我们都知道malloc底层是调用brk系统调用实现的,但是不是每次malloc都会调用brk。我们来使用bpftrace验证以下。

写一个malloc的程序。

复制代码
#include "stdio.h"
#include <stdlib.h>

int main() {
    void *p;
    p = malloc(5000);
    printf("%p\n", p);
    p = malloc(8);
    printf("%p\n", p);
    p = malloc(8);
    printf("%p\n", p);
    p = malloc(8);
    printf("%p\n", p);
    p = malloc(8);
    printf("%p\n", p);
    p = malloc(8);
    printf("%p\n", p);
    return 0;
}
复制代码

我们调用6次malloc。

使用bpftrace监控brk系统调用。

bpftrace -e 'tracepoint:syscalls:sys_enter_brk { printf("%s %p \n", comm, args->brk); }'

run

main (nil) 
main (nil) 
main 0x557e0eef9000

bpftrace只抓到3次,而且前两次的参数都是nil。

 

posted on   半山随笔  阅读(42)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示