blob: 563f21890f9e57d47896e54528fca5c8af1400fd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <library/cpp/lwtrace/all.h>
#include <library/cpp/lwtrace/lwprobe.h>
template <ui64 N>
ui64 Fact() {
ui64 result = N * Fact<N - 1>();
#ifndef LWTRACE_DISABLE
// Note that probe is create on the first pass
// LWTRACE_DECLARE_PROVIDER and LWTRACE_DEFINE_PROVIDER are not needed
// (Provider is created implicitly)
static NLWTrace::TLWProbe<ui64> factProbe(
"LWTRACE_EXAMPLE_PROVIDER", "FactProbe_" + ToString(N), {}, {"result"});
LWPROBE_OBJ(factProbe, result);
#endif // LWTRACE_DISABLE
return result;
}
template <>
ui64 Fact<0>() {
return 1;
}
int main() {
Fact<6>(); // First run is required to create probes we can use later in trace query
NLWTrace::StartLwtraceFromEnv(); // parse trace query and create trace session
Cout << Fact<6>() << Endl; // actually trigger probes
return 0;
}
|