TGTGInsighttelegram intelligenceLIVE / telegram public index
Post content
Post content
昨晚发现 bpf-helpers(7) 里有个 bpf_probe_write_user, 十分震惊, goroutine funcgraph 的任务又有新解了, 那就是直接在每个 goroutine 调用栈的第一层的 cfa+8 把 goroutine id 写到内存里, 这样在扩栈之后依然能通过回溯查到 goroutine id, 也不必 attach golang 实现相关的几个函数, 依然是一个通用的 tracing tool. 回溯到调用栈的根需要循环, 不过我亲测在 bcc 0.24.0-8f40d6f5 里的循环 unroll 已经非常好用了, 循环次数不设上限, bpf 指令数目才是上限. 这个方案本来之前被我画叉了, 标记为只适用于 ptrace(2) 的玩具, 没想到 bpf 已经放权到这种地步, 赶紧快进到允许改寄存器, 逼宫 gdb(1) 指日可待.