aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/zen/zen.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/zen/zen.cpp b/src/zen/zen.cpp
index bee1fd676..713a0d66d 100644
--- a/src/zen/zen.cpp
+++ b/src/zen/zen.cpp
@@ -31,9 +31,16 @@
#include <zencore/logging.h>
#include <zencore/scopeguard.h>
#include <zencore/string.h>
+#include <zencore/trace.h>
#include <zenhttp/httpcommon.h>
#include <zenutil/zenserverprocess.h>
+#include <zencore/memory/fmalloc.h>
+#include <zencore/memory/llm.h>
+#include <zencore/memory/memory.h>
+#include <zencore/memory/memorytrace.h>
+#include <zencore/memory/newdelete.h>
+
#if ZEN_WITH_TESTS
# define ZEN_TEST_WITH_RUNNER 1
# include <zencore/testing.h>
@@ -603,6 +610,29 @@ main(int argc, char** argv)
Options.add_options()("help", "Show command line help");
Options.add_options()("c, command", "Sub command", cxxopts::value<std::string>(SubCommand));
+#if ZEN_WITH_TRACE
+ std::string TraceChannels;
+ std::string TraceHost;
+ std::string TraceFile;
+
+ Options.add_option("ue-trace",
+ "",
+ "trace",
+ "Specify which trace channels should be enabled",
+ cxxopts::value<std::string>(TraceChannels)->default_value(""),
+ "");
+
+ Options.add_option("ue-trace",
+ "",
+ "tracehost",
+ "Hostname to send the trace to",
+ cxxopts::value<std::string>(TraceHost)->default_value(""),
+ "");
+
+ Options
+ .add_option("ue-trace", "", "tracefile", "Path to write a trace to", cxxopts::value<std::string>(TraceFile)->default_value(""), "");
+#endif // ZEN_WITH_TRACE
+
Options.parse_positional({"command"});
const bool IsNullInvoke = (argc == 1); // If no arguments are passed we want to print usage information
@@ -653,6 +683,30 @@ main(int argc, char** argv)
logging::SetLogLevel(logging::level::Trace);
}
+#if ZEN_WITH_TRACE
+ if (TraceHost.size())
+ {
+ TraceStart("zen", TraceHost.c_str(), TraceType::Network);
+ }
+ else if (TraceFile.size())
+ {
+ TraceStart("zen", TraceFile.c_str(), TraceType::File);
+ }
+ else
+ {
+ TraceInit("zen");
+ }
+#endif // ZEN_WITH_TRACE
+
+#if ZEN_WITH_MEMTRACK
+ FMalloc* TraceMalloc = MemoryTrace_Create(GMalloc);
+ if (TraceMalloc != GMalloc)
+ {
+ GMalloc = TraceMalloc;
+ MemoryTrace_Initialize();
+ }
+#endif
+
for (const CommandInfo& CmdInfo : Commands)
{
if (StrCaseCompare(SubCommand.c_str(), CmdInfo.CmdName) == 0)