这篇文章参考自Rust Profiling with DTrace and FlameGraph on OSX ,不同之处在于我使用的是操作系统是FreeBSD
。使用DTrace
和火焰图分析Rust
程序的步骤如下:
(1)如果编译Rust
的release
版本程序,需要在Cargo.toml
加入下列配置:
[profile.release]
debug = true
(2)运行Rust
程序(名字为stream
),并使用DTrace
进行采样:
dtrace -c './stream' -o out.stacks -n 'profile-997 /execname == "stream"/ { @[ustack(100)] = count(); }'
(3)使用火焰图定义采样生成的out.stacks
文件进行分析:
./stackcollapse.pl out.stacks | ./flamegraph.pl > pretty-graph.svg
生成的最终SVG
文件如下: