我试图使用LTTng-ctl库来控制Trace过程。
我几乎快要成功了。
但是在对event结果提序列化的过程中出现了错误。我缺少给ext_probe
extend.prt
之类的字段赋值。被断言发现终止程序。
我再次认识到了“有些学习门槛”,这句话的分量。而这些学习门槛对一个面临deadline的人来讲很不友好。
或许之后有时间我会去爬源码,然后重构。
但是对demo来讲,用在测试环境下。那我就祭出了system()
。当然还有人说可以使用popen
。这无所谓。
放弃了性能(这是肯定的 会增加fork和线程同步)和稳定性(在没有完全掌握他的API设计的情况,写出来的东西也真不见得稳定)。事情就变得很简单,好像我前两天研究他的库都白研究了:
# include<cstdlib>
# include<chrono>
# include<thread>
int main(int argc, char const *argv[])
{
system("lttng create my-test --output=tmp");
system("lttng enable-event --userspace --all ");
system("lttng start");
std::chrono::seconds sec(10);
std::this_thread::sleep_for(sec);
system("lttng stop");
system("lttng destroy my-test");
return 0;
}