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