Nanotrace: Make nanotrace commonly usable

CMake's auto symbol export is a plain hack and does not work for
other build systems.
Besides fixing some non-working implicit conversions when using Qt5.15.

Change-Id: I80b77a4ebf8cad30c78c1c2ef2034e62d2063399
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Stenger
2022-01-26 11:52:07 +01:00
parent abbd6cdc8c
commit c492b29a45
6 changed files with 23 additions and 16 deletions

View File

@@ -206,12 +206,12 @@ void NodeInstanceClientProxy::writeCommand(const QVariant &command)
SyncNanotraceCommand cmd = command.value<SyncNanotraceCommand>();
NANOTRACE_INSTANT_ARGS("Sync", "writeCommand",
{"name", cmd.name().toStdString()},
{"counter", m_writeCommandCounter});
{"counter", int64_t(m_writeCommandCounter)});
} else {
NANOTRACE_INSTANT_ARGS("Update", "writeCommand",
{"name", command.typeName()},
{"counter", m_writeCommandCounter});
{"counter", int64_t(m_writeCommandCounter)});
}
}
#endif
@@ -409,14 +409,14 @@ void NodeInstanceClientProxy::readDataStream()
SyncNanotraceCommand cmd = command.value<SyncNanotraceCommand>();
NANOTRACE_INSTANT_ARGS("Sync", "readCommand",
{"name", cmd.name().toStdString()},
{"counter", readCommandCounter});
{"counter", int64_t(readCommandCounter)});
// Do not dispatch this command.
continue;
} else {
NANOTRACE_INSTANT_ARGS("Update", "readCommand",
{"name", command.typeName()},
{"counter", readCommandCounter});
{"counter", int64_t(readCommandCounter)});
}
}
#endif

View File

@@ -7,6 +7,5 @@ add_qtc_library(Nanotrace
PROPERTIES
CXX_VISIBILITY_PRESET default
VISIBILITY_INLINES_HIDDEN OFF
WINDOWS_EXPORT_ALL_SYMBOLS ON
)

View File

@@ -25,6 +25,15 @@
#pragma once
#include <QtGlobal>
#if defined(NANOTRACE_LIBRARY)
# define NANOTRACESHARED_EXPORT Q_DECL_EXPORT
#else
# define NANOTRACESHARED_EXPORT Q_DECL_IMPORT
#endif
#include <string>
#include <variant>
#include <vector>
@@ -68,7 +77,7 @@ using Units = std::chrono::nanoseconds;
using Clock = std::chrono::high_resolution_clock;
using TimePoint = std::chrono::time_point< Clock >;
class Arg
class NANOTRACESHARED_EXPORT Arg
{
public:
using SupportedType = std::variant<int, int64_t, double, std::string>;
@@ -82,19 +91,19 @@ private:
SupportedType m_value;
};
void init(const std::string &process, const std::string &thread, const std::string &path);
NANOTRACESHARED_EXPORT void init(const std::string &process, const std::string &thread, const std::string &path);
void shutdown();
NANOTRACESHARED_EXPORT void shutdown();
void flush();
NANOTRACESHARED_EXPORT void flush();
void addTracePoint(
NANOTRACESHARED_EXPORT void addTracePoint(
const std::string &name,
const std::string &cat,
char phase,
std::initializer_list< Nanotrace::Arg > arguments);
class ScopeTracer
class NANOTRACESHARED_EXPORT ScopeTracer
{
public:
ScopeTracer(

View File

@@ -2,7 +2,6 @@ QtcLibrary {
name: "Nanotrace"
cpp.defines: base.concat("NANOTRACE_LIBRARY", "NANOTRACE_ENABLED")
cpp.visibility: "default"
files: [
"nanotrace.cpp",

View File

@@ -134,7 +134,7 @@ void BaseConnectionManager::readDataStream(Connection &connection)
SyncNanotraceCommand cmd = command.value<SyncNanotraceCommand>();
NANOTRACE_INSTANT_ARGS("Sync", "readCommand",
{"name", cmd.name().toStdString()},
{"counter", commandCounter});
{"counter", int64_t(commandCounter)});
writeCommand(command);
// Do not dispatch this command.
@@ -143,7 +143,7 @@ void BaseConnectionManager::readDataStream(Connection &connection)
} else {
NANOTRACE_INSTANT_ARGS("Update", "readCommand",
{"name", command.typeName()},
{"counter", commandCounter});
{"counter", int64_t(commandCounter)});
}
}
#endif

View File

@@ -196,12 +196,12 @@ void NodeInstanceServerProxy::writeCommand(const QVariant &command)
SyncNanotraceCommand cmd = command.value<SyncNanotraceCommand>();
NANOTRACE_INSTANT_ARGS("Sync", "writeCommand",
{"name", cmd.name().toStdString()},
{"counter", m_connectionManager.writeCounter()});
{"counter", int64_t(m_connectionManager.writeCounter())});
} else {
NANOTRACE_INSTANT_ARGS("Update", "writeCommand",
{"name", command.typeName()},
{"counter", m_connectionManager.writeCounter()});
{"counter", int64_t(m_connectionManager.writeCounter())});
}
#endif