uftrace是一个追踪和分析C/C++程序的工具,其灵感来自于Linux kernel的ftrace框架(项目主页:https://github.com/namhyung/uftrace)。
(1)安装。
uftrace依赖于elfutils项目中的libelf,所以要首先安装libelf,而uftrace的安装则很简单:
# git clone https://github.com/namhyung/uftrace.git
# cd uftrace
# make
# make install
(2)使用。
以这个简单程序(test.cpp)为例:
#include <cstdio>
class A {
public:
A() {printf("A is created\n");}
~A() {printf("A is destroyed\n");}
};
int main() {
A a;
return 0;
}
uftrace要求编译时指定-pg或-finstrument-functions选项:
# g++ -pg test.cpp
编译成功后,通过uftrace工具可以对程序进行分析:
# uftrace a.out
A is created
A is destroyed
# DURATION TID FUNCTION
4.051 us [ 8083] | __cxa_atexit();
[ 8083] | main() {
[ 8083