diff options
| author | Dan Engelbrecht <[email protected]> | 2023-09-22 03:47:31 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-09-22 09:47:31 +0200 |
| commit | 34132b6d936ea4077f8c96d84a00c74496332a4f (patch) | |
| tree | 865131960ed43e2e9a0db5d2eb80144a204b4969 /src/zencore/trace.cpp | |
| parent | Improvement: Add names to background jobs for easier debugging (#412) (diff) | |
| download | zen-34132b6d936ea4077f8c96d84a00c74496332a4f.tar.xz zen-34132b6d936ea4077f8c96d84a00c74496332a4f.zip | |
add trace command to enable/disable tracing at runtime (#416)
* add trace command to enable/disable tracing at runtime
* rework tracing init/start/stop
* changelog
Diffstat (limited to 'src/zencore/trace.cpp')
| -rw-r--r-- | src/zencore/trace.cpp | 74 |
1 files changed, 49 insertions, 25 deletions
diff --git a/src/zencore/trace.cpp b/src/zencore/trace.cpp index 6da5d28d6..d71ca0984 100644 --- a/src/zencore/trace.cpp +++ b/src/zencore/trace.cpp @@ -9,10 +9,48 @@ # include <zencore/trace.h> void -TraceInit(const char* HostOrPath, TraceType Type) +TraceInit() { - bool EnableEvents = true; + static std::atomic_bool gInited = false; + bool Expected = false; + if (!gInited.compare_exchange_strong(Expected, true)) + { + return; + } + + trace::FInitializeDesc Desc = { + .bUseImportantCache = true, + }; + trace::Initialize(Desc); + trace::ThreadRegister("main", /* system id */ 0, /* sort id */ 0); + trace::DescribeSession("zenserver", +# if ZEN_BUILD_DEBUG + trace::Build::Debug, +# else + trace::Build::Development, +# endif + "", + ZEN_CFG_VERSION_BUILD_STRING); +} + +void +TraceShutdown() +{ + (void)TraceStop(); + trace::Shutdown(); +} + +bool +IsTracing() +{ + return trace::IsTracing(); +} + +void +TraceStart(const char* HostOrPath, TraceType Type) +{ + TraceInit(); switch (Type) { case TraceType::Network: @@ -24,34 +62,20 @@ TraceInit(const char* HostOrPath, TraceType Type) break; case TraceType::None: - EnableEvents = false; break; } - - trace::FInitializeDesc Desc = { - .bUseImportantCache = false, - }; - trace::Initialize(Desc); - - if (EnableEvents) - { - trace::ToggleChannel("cpu", true); - trace::ThreadRegister("main", /* system id */ 0, /* sort id */ 0); - trace::DescribeSession("zenserver", -# if ZEN_BUILD_DEBUG - trace::Build::Debug, -# else - trace::Build::Development, -# endif - "", - ZEN_CFG_VERSION_BUILD_STRING); - } + trace::ToggleChannel("cpu", true); } -void -TraceShutdown() +bool +TraceStop() { - trace::Shutdown(); + trace::ToggleChannel("cpu", false); + if (trace::Stop()) + { + return true; + } + return false; } #endif // ZEN_WITH_TRACE |