From 315d25a787d88d6a7dbc8243f8150696476c9ae7 Mon Sep 17 00:00:00 2001 From: joshuakr Date: Tue, 5 Jan 2021 13:07:49 -0800 Subject: [PATCH 1/7] Fix shutdown hang (resolves #160) --- client/TracySysTrace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/TracySysTrace.cpp b/client/TracySysTrace.cpp index 97277977..da0c84f3 100644 --- a/client/TracySysTrace.cpp +++ b/client/TracySysTrace.cpp @@ -706,10 +706,10 @@ static void SetupSampling( int64_t& samplingPeriod ) for( int i=0; i Date: Thu, 21 Jan 2021 17:21:43 -0800 Subject: [PATCH 2/7] Revert "Fix shutdown hang (resolves #160)" This reverts commit 315d25a787d88d6a7dbc8243f8150696476c9ae7. --- client/TracySysTrace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/TracySysTrace.cpp b/client/TracySysTrace.cpp index da0c84f3..97277977 100644 --- a/client/TracySysTrace.cpp +++ b/client/TracySysTrace.cpp @@ -706,10 +706,10 @@ static void SetupSampling( int64_t& samplingPeriod ) for( int i=0; i Date: Thu, 21 Jan 2021 17:06:55 -0800 Subject: [PATCH 3/7] Imported chrome traces show the file name in the title bar --- server/TracyWorker.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 80692de8..6fb4ffcc 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -512,6 +512,8 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks ) char tmp[1024]; f.Read( tmp, sz ); m_captureName = std::string( tmp, tmp+sz ); + if (m_captureName.empty()) + m_captureName = f.GetFilename(); } { f.Read( sz ); From 2920f97911c1499dadcc751b1022f61c4df40867 Mon Sep 17 00:00:00 2001 From: joshuakr Date: Thu, 21 Jan 2021 17:07:31 -0800 Subject: [PATCH 4/7] Imported Chrome traces bring over thread names --- import-chrome/src/import-chrome.cpp | 11 ++++++++++- server/TracyWorker.cpp | 18 ++++++++++++++---- server/TracyWorker.hpp | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/import-chrome/src/import-chrome.cpp b/import-chrome/src/import-chrome.cpp index a5186e4d..a03888d9 100644 --- a/import-chrome/src/import-chrome.cpp +++ b/import-chrome/src/import-chrome.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "json.hpp" @@ -56,6 +57,7 @@ int main( int argc, char** argv ) std::vector timeline; std::vector messages; std::vector plots; + std::unordered_map threadNames; if( j.is_object() && j.contains( "traceEvents" ) ) { @@ -156,6 +158,13 @@ int main( int argc, char** argv ) } } } + else if (type == "M") + { + if (v.contains("name") && v["name"] == "thread_name" && v.contains("args") && v["args"].is_object() && v["args"].contains("name")) + { + threadNames[v["tid"].get()] = v["args"]["name"].get(); + } + } } std::stable_sort( timeline.begin(), timeline.end(), [] ( const auto& l, const auto& r ) { return l.timestamp < r.timestamp; } ); @@ -189,7 +198,7 @@ int main( int argc, char** argv ) while( *program ) program++; program--; while( program > input && ( *program != '/' || *program != '\\' ) ) program--; - tracy::Worker worker( program, timeline, messages, plots ); + tracy::Worker worker( program, timeline, messages, plots, threadNames ); auto w = std::unique_ptr( tracy::FileWrite::Open( output, clev ) ); if( !w ) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 6fb4ffcc..a519274f 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -275,7 +275,7 @@ Worker::Worker( const char* addr, uint16_t port ) m_threadNet = std::thread( [this] { SetThreadName( "Tracy Network" ); Network(); } ); } -Worker::Worker( const std::string& program, const std::vector& timeline, const std::vector& messages, const std::vector& plots ) +Worker::Worker( const std::string& program, const std::vector& timeline, const std::vector& messages, const std::vector& plots, const std::unordered_map& threadNames ) : m_hasData( true ) , m_delay( 0 ) , m_resolution( 0 ) @@ -428,9 +428,19 @@ Worker::Worker( const std::string& program, const std::vectorsecond.c_str()); + AddThreadString(t.first, buf, len); + } + else + { + char buf[64]; + sprintf( buf, "%" PRIu64, t.first ); + AddThreadString( t.first, buf, strlen( buf ) ); + } } m_data.framesBase = m_data.frames.Retrieve( 0, [this] ( uint64_t name ) { diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index 2fe6ba00..b2f9a3d1 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -394,7 +394,7 @@ public: }; Worker( const char* addr, uint16_t port ); - Worker( const std::string& program, const std::vector& timeline, const std::vector& messages, const std::vector& plots ); + Worker( const std::string& program, const std::vector& timeline, const std::vector& messages, const std::vector& plots, const std::unordered_map& threadNames ); Worker( FileRead& f, EventType::Type eventMask = EventType::All, bool bgTasks = true ); ~Worker(); From c5261e42ba0f7bafbae3ca033b11460e6b92c66c Mon Sep 17 00:00:00 2001 From: joshuakr Date: Thu, 21 Jan 2021 17:41:55 -0800 Subject: [PATCH 5/7] Fix for macOS build --- server/TracyWorker.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index b2f9a3d1..df6d4623 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include "../common/TracyForceInline.hpp" From db83fc443f1bfbb2326787d8a058965e75a3cb4c Mon Sep 17 00:00:00 2001 From: joshuakr Date: Thu, 21 Jan 2021 18:31:49 -0800 Subject: [PATCH 6/7] Adding a few things to ignore --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index f18e0257..baa59397 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ x64 Release Debug +_build +_compiler +tools/* *.d *.o *.so @@ -28,3 +31,7 @@ vcpkg/* !vcpkg/install_vcpkg_dependencies.bat .deps/ .dirstamp +.vscode/ + +/_*/** +/**/__pycache__/** From c96f01956da41130f60efa75d9afa6730025cbb0 Mon Sep 17 00:00:00 2001 From: joshuakr Date: Thu, 21 Jan 2021 18:32:03 -0800 Subject: [PATCH 7/7] PR feedback: write the name into the tracy file --- import-chrome/src/import-chrome.cpp | 14 +++++++++----- server/TracyWorker.cpp | 3 ++- server/TracyWorker.hpp | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/import-chrome/src/import-chrome.cpp b/import-chrome/src/import-chrome.cpp index a03888d9..d17653a9 100644 --- a/import-chrome/src/import-chrome.cpp +++ b/import-chrome/src/import-chrome.cpp @@ -194,11 +194,15 @@ int main( int argc, char** argv ) printf( "\33[2KProcessing...\r" ); fflush( stdout ); - auto program = input; - while( *program ) program++; - program--; - while( program > input && ( *program != '/' || *program != '\\' ) ) program--; - tracy::Worker worker( program, timeline, messages, plots, threadNames ); + auto&& getFilename = [](const char* in) { + auto out = in; + while (*out) ++out; + --out; + while (out > in && (*out != '/' || *out != '\\')) out--; + return out; + }; + + tracy::Worker worker( getFilename(output), getFilename(input), timeline, messages, plots, threadNames ); auto w = std::unique_ptr( tracy::FileWrite::Open( output, clev ) ); if( !w ) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index a519274f..5ca5cef2 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -275,10 +275,11 @@ Worker::Worker( const char* addr, uint16_t port ) m_threadNet = std::thread( [this] { SetThreadName( "Tracy Network" ); Network(); } ); } -Worker::Worker( const std::string& program, const std::vector& timeline, const std::vector& messages, const std::vector& plots, const std::unordered_map& threadNames ) +Worker::Worker( const char* name, const char* program, const std::vector& timeline, const std::vector& messages, const std::vector& plots, const std::unordered_map& threadNames ) : m_hasData( true ) , m_delay( 0 ) , m_resolution( 0 ) + , m_captureName( name ) , m_captureProgram( program ) , m_captureTime( 0 ) , m_pid( 0 ) diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index df6d4623..09d6d7cf 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -395,7 +395,7 @@ public: }; Worker( const char* addr, uint16_t port ); - Worker( const std::string& program, const std::vector& timeline, const std::vector& messages, const std::vector& plots, const std::unordered_map& threadNames ); + Worker( const char* name, const char* program, const std::vector& timeline, const std::vector& messages, const std::vector& plots, const std::unordered_map& threadNames ); Worker( FileRead& f, EventType::Type eventMask = EventType::All, bool bgTasks = true ); ~Worker();