1. 排查内存泄漏
memory.c
memory.bt
可以执行相关memory,用bpftrace追踪malloc和free的过程
修改memory.bt,加上malloc和free统计,重新执行
2. 验证tcp连接关闭是应用关闭还是内核关闭
nginx服务启动后,会处于监听状态,当客户端与nginx服务建立成功后,如果经历post_accept_timeout秒后仍然没有收到用户数据,则内核会直接丢弃连接,可以使用bpftrace验证这个场景nginx显式调用close是应用关闭还是内核释放
nginx关闭连接是调用nginx_close_connection进行关闭的
nginx.bt
可以根据打印结果,可以发现是nginx显式调用ngx_close_connection关闭连接的
3. 追踪线程创建过程
pthread.c
编译
gcc -o pthread pthread.c -lpthread
pthread.bt
4. pbftrace内核中打印连接的地址信息
transmit_skb.bt