Skip to content
Draft
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
3853354
Ignore example build files
Lectem Mar 8, 2025
8a9e92a
Fix D3D11 issues when TRACY_CALLSTACK==0 (default for examples)
Lectem Mar 8, 2025
286ebd2
[Add] server callstack solver
GabrielSiliceum Feb 20, 2025
7ef3fe3
Move TracyCallstack (and dependencies) to common/ folder
Lectem Mar 8, 2025
e8e60d4
Fix module info init and free. Clean InitCallstack
Lectem Mar 8, 2025
ce22a0e
Remove s_clientSendImageInfo for now and make s_serverLocalResolve tr…
Lectem Mar 8, 2025
1444ad3
IsEnv now supports default value
Lectem Mar 8, 2025
2a74e0c
Now fallback correctly when symbol is not found
Lectem Mar 8, 2025
901e826
Unify image caches across platforms
Lectem Mar 9, 2025
361618b
Symbol resolution configuration + update versions
Lectem Mar 9, 2025
e51f755
Clean formating and remove unneeded std usage
Lectem Mar 9, 2025
595188e
Fix lifetime of callstack symbol resolver (Init/EndCallstack)
GabrielSiliceum Mar 10, 2025
8762675
Always save image infos so that we may resolve symbols later on
GabrielSiliceum Mar 10, 2025
49880f9
Fix TryResolveCallstack when worker does not allow to query symbols
GabrielSiliceum Mar 10, 2025
140a33d
Warn once about symsrv if symbol resolution fails
Lectem Mar 10, 2025
43faca0
Resolve Symbols button
GabrielSiliceum Mar 10, 2025
3f9e2a9
Self Profiling working
GabrielSiliceum Mar 13, 2025
24bb230
Update tracy's document for Server symbol resolution
GabrielSiliceum Mar 13, 2025
b185d37
Fix grammar issue
GabrielSiliceum Mar 14, 2025
c6f8487
WriteDebugFieldToPacket is now a static function
Lectem Mar 18, 2025
676ed7a
modify some comment
GabrielSiliceum Mar 14, 2025
62f0f59
Add get build_id while dl_iterate_phdr
GabrielSiliceum Mar 17, 2025
2992339
Add Sending Image Data from backend when found new image
GabrielSiliceum Mar 19, 2025
b0fb501
fix decodeCallStack flag for linux
GabrielSiliceum Mar 20, 2025
073df4e
Fix build (missing stdint.h include)
GabrielSiliceum Mar 21, 2025
c22db64
fix assert bad conditon
GabrielSiliceum Apr 22, 2025
4135d4c
SymbolResolutionConfig construct from config
GabrielSiliceum Apr 22, 2025
11cd637
Fix DecodeCallStackPtrStatusFlags values
GabrielSiliceum Apr 24, 2025
adeff0a
Better memory layout for ImageDebugInfo
GabrielSiliceum Apr 24, 2025
3a53e18
symbolsAttemptResolutionByServer set to false by default
GabrielSiliceum Apr 24, 2025
ace2660
add message window when symbol data missing in source view.
GabrielSiliceum Apr 25, 2025
22e62a3
return unresolve symbol when failing symaddr
GabrielSiliceum Apr 25, 2025
c29c45d
[Fix] Fix spelling mistake
GabrielSiliceum Jul 15, 2025
e0d0380
Add first attempt for async profiler symbol resolution
GabrielSiliceum Jul 15, 2025
2b3c00d
Revert "Add first attempt for async profiler symbol resolution"
GabrielSiliceum Jul 16, 2025
c8b9d70
Merge remote-tracking branch 'tracy/master' into profiler-symbol-reso…
GabrielSiliceum Jul 16, 2025
d2245a9
Merge remote-tracking branch 'tracy-official/master' into profiler-sy…
GabrielSiliceum Jul 18, 2025
25a3d4f
fix formating
GabrielSiliceum Jul 22, 2025
9374713
fix image deserialisation from file
GabrielSiliceum Jul 22, 2025
2b6bb9f
Fix kernel symbols resolution on windows (image size is required even…
Lectem Jul 23, 2025
b8f37d9
Fix comment and naming
GabrielSiliceum Jul 23, 2025
d4eabd9
Merge branch 'master' into profiler-symbol-resolution
Lectem Jul 23, 2025
6a707bb
Remove assert for kernelDriver.end since we know retrieve the module …
Lectem Jul 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,6 @@ compile_commands.json
profiler/build/wasm/Tracy-release.*
profiler/build/wasm/Tracy-debug.*
profiler/build/wasm/embed.tracy
examples/ToyPathTracer/Windows/TestCpu
examples/ToyPathTracer/Windows/x64
examples/ToyPathTracer/Windows/TestCpu.vcxproj.user
10 changes: 5 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -177,17 +177,12 @@ set(client_includes
${TRACY_PUBLIC_DIR}/client/tracy_SPSCQueue.h
${TRACY_PUBLIC_DIR}/client/TracyKCore.hpp
${TRACY_PUBLIC_DIR}/client/TracyArmCpuTable.hpp
${TRACY_PUBLIC_DIR}/client/TracyCallstack.h
${TRACY_PUBLIC_DIR}/client/TracyCallstack.hpp
${TRACY_PUBLIC_DIR}/client/TracyCpuid.hpp
${TRACY_PUBLIC_DIR}/client/TracyDebug.hpp
${TRACY_PUBLIC_DIR}/client/TracyDxt1.hpp
${TRACY_PUBLIC_DIR}/client/TracyFastVector.hpp
${TRACY_PUBLIC_DIR}/client/TracyLock.hpp
${TRACY_PUBLIC_DIR}/client/TracyProfiler.hpp
${TRACY_PUBLIC_DIR}/client/TracyRingBuffer.hpp
${TRACY_PUBLIC_DIR}/client/TracyScoped.hpp
${TRACY_PUBLIC_DIR}/client/TracyStringHelpers.hpp
${TRACY_PUBLIC_DIR}/client/TracySysPower.hpp
${TRACY_PUBLIC_DIR}/client/TracySysTime.hpp
${TRACY_PUBLIC_DIR}/client/TracySysTrace.hpp
Expand All @@ -199,13 +194,18 @@ set(common_includes
${TRACY_PUBLIC_DIR}/common/TracyAlign.hpp
${TRACY_PUBLIC_DIR}/common/TracyAlloc.hpp
${TRACY_PUBLIC_DIR}/common/TracyApi.h
${TRACY_PUBLIC_DIR}/common/TracyCallstack.h
${TRACY_PUBLIC_DIR}/common/TracyCallstack.hpp
${TRACY_PUBLIC_DIR}/common/TracyColor.hpp
${TRACY_PUBLIC_DIR}/common/TracyDebug.hpp
${TRACY_PUBLIC_DIR}/common/TracyFastVector.hpp
${TRACY_PUBLIC_DIR}/common/TracyForceInline.hpp
${TRACY_PUBLIC_DIR}/common/TracyMutex.hpp
${TRACY_PUBLIC_DIR}/common/TracyProtocol.hpp
${TRACY_PUBLIC_DIR}/common/TracyQueue.hpp
${TRACY_PUBLIC_DIR}/common/TracySocket.hpp
${TRACY_PUBLIC_DIR}/common/TracyStackFrames.hpp
${TRACY_PUBLIC_DIR}/common/TracyStringHelpers.hpp
${TRACY_PUBLIC_DIR}/common/TracySystem.hpp
${TRACY_PUBLIC_DIR}/common/TracyUwp.hpp
${TRACY_PUBLIC_DIR}/common/TracyYield.hpp)
Expand Down
5 changes: 4 additions & 1 deletion capture/src/capture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,10 @@ int main( int argc, char** argv )

printf( "Connecting to %s:%i...", address, port );
fflush( stdout );
tracy::Worker worker( address, port, memoryLimit );

tracy::Worker::SymbolResolutionConfig symConfig{};
symConfig.m_attemptResolutionByWorker = false;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the reason for setting this explicitly?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the capture tool, this is a kind of reminder to later add something to control this settings, most likely through a commandline option.

For the importers and the update tool, symbol resolution by the worker is not currently supported (but ultimately, it should be merged with offline resolution and supported), so we explicitely mark it disabled. (In case default settings are ever changed).

tracy::Worker worker( address, port, memoryLimit, symConfig );
while( !worker.HasData() )
{
const auto handshake = worker.GetHandshakeStatus();
Expand Down
1 change: 1 addition & 0 deletions cmake/server.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ set(TRACY_COMMON_DIR ${CMAKE_CURRENT_LIST_DIR}/../public/common)
set(TRACY_COMMON_SOURCES
tracy_lz4.cpp
tracy_lz4hc.cpp
TracyCallstack.cpp
TracySocket.cpp
TracyStackFrames.cpp
TracySystem.cpp
Expand Down
4 changes: 3 additions & 1 deletion csvexport/src/csvexport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,9 @@ int main(int argc, char** argv)
return 1;
}

auto worker = tracy::Worker(*f);
tracy::Worker::SymbolResolutionConfig symConfig{};
symConfig.m_attemptResolutionByWorker = false;
auto worker = tracy::Worker(*f, symConfig);

if (args.unwrapMessages)
{
Expand Down
4 changes: 3 additions & 1 deletion import/src/import-chrome.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,9 @@ int main( int argc, char** argv )
return out;
};

tracy::Worker worker( getFilename(output), getFilename(input), timeline, messages, plots, threadNames );
tracy::Worker::SymbolResolutionConfig symConfig{};
symConfig.m_attemptResolutionByWorker = false;
tracy::Worker worker( getFilename(output), getFilename(input), timeline, messages, plots, threadNames, symConfig );

auto w = std::unique_ptr<tracy::FileWrite>( tracy::FileWrite::Open( output, clev ) );
if( !w )
Expand Down
6 changes: 4 additions & 2 deletions import/src/import-fuchsia.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -665,9 +665,11 @@ int main(int argc, char **argv) {
out--;
return out;
};


tracy::Worker::SymbolResolutionConfig symConfig{};
symConfig.m_attemptResolutionByWorker = false;
tracy::Worker worker(getFilename(output), getFilename(input), timeline,
messages, plots, std::move(dec.threadNames));
messages, plots, std::move(dec.threadNames), symConfig);

auto w =
std::unique_ptr<tracy::FileWrite>(tracy::FileWrite::Open(output, clev));
Expand Down
22 changes: 22 additions & 0 deletions manual/tracy.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1895,10 +1895,32 @@ \subsubsection{Debugging symbols}

At initilization time, tracy will attempt to preload symbols for device drivers and process modules. As this process can be slow when a lot of pdbs are involved, you can set the \texttt{TRACY\_NO\_DBGHELP\_INIT\_LOAD} environment variable to "1" to disable this behavior and rely on-demand symbol loading.

\begin{bclogo}[
noborder=true,
couleur=black!5,
logo=\bcbombe
]{Important}

To be able to fully resolve kernel symbols, you might need to have matching versions of \texttt{dbghelp.dll} and \texttt{symsrv.dll} in your \texttt{PATH} or working directory and use symbol servers. Set the \texttt{\_NT\_SYMBOL\_PATH} environment variable to point to the symbol servers you want. For example:
\begin{lstlisting}
_NT\_SYMBOL\_PATH=srv*YourPdbCachePath*https://msdl.microsoft.com/download/symbols
\end{lstlisting}

To get more information about this topic, check Microsoft's official docs: \url{https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path}.
Note that downloading the kernel drivers symbols can be slow at the first execution of the program, or a Window update.
\end{bclogo}

\paragraph{Disabling resolution of inline frames}

Inline frames retrieval on Windows can be multiple orders of magnitude slower than just performing essential symbol resolution. This manifests as profiler seemingly being stuck for a long time, having hundreds of thousands of query backlog entries queued, which are slowly trickling down. If your use case requires speed of operation rather than having call stacks with inline frames included, you may define the \texttt{TRACY\_NO\_CALLSTACK\_INLINES} macro, which will make the profiler stick to the basic but fast frame resolution mode.

\paragraph{Server symbol resolution}

Instead of having the client do the resolution, you can configure the server to attempt the symbol resolution.
This is controlled by the profiler global settings in the "Symbol resolution" section.
If "Attempt resolution by profiler" is enabled, the server will attempt to resolve symbols locally. For this, the Tracy-Client will send informations about the executable images loaded by the process. If symbol resolution on the server fails, it will query the client for the information as a fallback mechanism.
However if "Prevent resolution by application" is enabled, Tracy-Client will not resolve any symbols and simply send the minimal images information.

\paragraph{Offline symbol resolution}

By default, tracy client resolves callstack symbols in a background thread at runtime.
Expand Down
10 changes: 5 additions & 5 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -145,17 +145,12 @@ client_includes = [
'public/client/tracy_rpmalloc.hpp',
'public/client/tracy_SPSCQueue.h',
'public/client/TracyArmCpuTable.hpp',
'public/client/TracyCallstack.h',
'public/client/TracyCallstack.hpp',
'public/client/TracyDebug.hpp',
'public/client/TracyDxt1.hpp',
'public/client/TracyFastVector.hpp',
'public/client/TracyKCore.hpp',
'public/client/TracyLock.hpp',
'public/client/TracyProfiler.hpp',
'public/client/TracyRingBuffer.hpp',
'public/client/TracyScoped.hpp',
'public/client/TracyStringHelpers.hpp',
'public/client/TracySysPower.hpp',
'public/client/TracySysTime.hpp',
'public/client/TracySysTrace.hpp',
Expand All @@ -168,13 +163,18 @@ common_includes = [
'public/common/TracyAlign.hpp',
'public/common/TracyAlloc.hpp',
'public/common/TracyApi.h',
'public/common/TracyCallstack.h',
'public/common/TracyCallstack.hpp',
'public/common/TracyColor.hpp',
'public/common/TracyDebug.hpp',
'public/common/TracyFastVector.hpp',
'public/common/TracyForceInline.hpp',
'public/common/TracyMutex.hpp',
'public/common/TracyProtocol.hpp',
'public/common/TracyQueue.hpp',
'public/common/TracySocket.hpp',
'public/common/TracyStackFrames.hpp',
'public/common/TracyStringHelpers.hpp',
'public/common/TracySystem.hpp',
'public/common/TracyUwp.hpp',
'public/common/TracyYield.hpp'
Expand Down
4 changes: 3 additions & 1 deletion profiler/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ project(

if(SELF_PROFILE)
add_definitions(-DTRACY_ENABLE)
add_compile_options(-g -O3 -fno-omit-frame-pointer)
if(NOT MSVC)
add_compile_options(-g -O3 -fno-omit-frame-pointer)
endif()
endif()

include(${CMAKE_CURRENT_LIST_DIR}/../cmake/config.cmake)
Expand Down
18 changes: 18 additions & 0 deletions profiler/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,8 @@ static void LoadConfig()
if( ini_sget( ini, "memory", "percent", "%d", &v ) && v >= 1 && v < 1000 ) s_config.memoryLimitPercent = v;
if( ini_sget( ini, "achievements", "enabled", "%d", &v ) ) s_config.achievements = v;
if( ini_sget( ini, "achievements", "asked", "%d", &v ) ) s_config.achievementsAsked = v;
if( ini_sget( ini, "symbols", "attemptResolutionByServer", "%d", &v ) ) s_config.symbolsAttemptResolutionByServer = v;
if( ini_sget( ini, "symbols", "preventResolutionByClient", "%d", &v ) ) s_config.symbolsPreventResolutionByClient = v;

ini_free( ini );
}
Expand Down Expand Up @@ -267,6 +269,10 @@ static bool SaveConfig()
fprintf( f, "enabled = %i\n", (int)s_config.achievements );
fprintf( f, "asked = %i\n", (int)s_config.achievementsAsked );

fprintf(f, "\n[symbols]\n");
fprintf(f, "attemptResolutionByServer = %i\n", (int)s_config.symbolsAttemptResolutionByServer);
fprintf(f, "preventResolutionByClient = %i\n", (int)s_config.symbolsPreventResolutionByClient);

fclose( f );
return true;
}
Expand Down Expand Up @@ -840,6 +846,18 @@ static void DrawContents()
ImGui::Spacing();
if( ImGui::Checkbox( "Enable achievements", &s_config.achievements ) ) SaveConfig();

ImGui::TextUnformatted( "Symbol resolution" );
ImGui::Indent();
if( ImGui::Checkbox( "Attempt resolution by profiler", &s_config.symbolsAttemptResolutionByServer ) ) SaveConfig();
ImGui::SameLine();
tracy::DrawHelpMarker( "When enabled, the profiler will attempt to resolve symbols first before querying the application." );

if( ImGui::Checkbox( "Prevent resolution by application", &s_config.symbolsPreventResolutionByClient ) ) SaveConfig();
ImGui::SameLine();
tracy::DrawHelpMarker( "When enabled, the application will not attempt to resolve symbols at all. The profiler can do the resolution, or it will require to use the `update` tool." );

ImGui::Unindent();

ImGui::PopStyleVar();
ImGui::TreePop();
}
Expand Down
2 changes: 2 additions & 0 deletions profiler/src/profiler/TracyConfig.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ struct Config
int dynamicColors = 1;
bool forceColors = false;
int shortenName = (int)ShortenName::NoSpaceAndNormalize;
bool symbolsAttemptResolutionByServer = true;
bool symbolsPreventResolutionByClient = false;
};

}
Expand Down
3 changes: 2 additions & 1 deletion profiler/src/profiler/TracySourceView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1157,7 +1157,8 @@ void SourceView::RenderSymbolView( Worker& worker, View& view )

const auto shortenName = view.GetShortenName();
auto sym = worker.GetSymbolData( m_symAddr );
assert( sym );
if( sym == nullptr ) return; // Might no have received symbol info yet

ImGui::PushFont( m_bigFont );
ImGui::PushStyleVar( ImGuiStyleVar_FramePadding, ImVec2( 0, 0 ) );
if( ButtonDisablable( " " ICON_FA_CARET_LEFT " ", m_historyCursor <= 1 ) )
Expand Down
17 changes: 15 additions & 2 deletions profiler/src/profiler/TracyView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ namespace tracy
double s_time = 0;

View::View( void(*cbMainThread)(const std::function<void()>&, bool), const char* addr, uint16_t port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb, AttentionCallback acb, const Config& config, AchievementsMgr* amgr )
: m_worker( addr, port, config.memoryLimit == 0 ? -1 : ( config.memoryLimitPercent * tracy::GetPhysicalMemorySize() / 100 ) )
: m_worker( addr, port, config.memoryLimit == 0 ? -1 : ( config.memoryLimitPercent * tracy::GetPhysicalMemorySize() / 100 ), Worker::SymbolResolutionConfig{ config.symbolsAttemptResolutionByServer, config.symbolsPreventResolutionByClient } )
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels that the data structure being created here should just accept the config and extract what it needs on its own.

Copy link
Contributor Author

@GabrielSiliceum GabrielSiliceum Jul 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

static inline const Worker::SymbolResolutionConfig SymbolResolutionConfigFromConfig( const Config& config ) { return { config.symbolsAttemptResolutionByServer, config.symbolsPreventResolutionByClient }; }


View::View( void(*cbMainThread)(const std::function<void()>&, bool), const char* addr, uint16_t port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb, AttentionCallback acb, const Config& config, AchievementsMgr* amgr )
    : m_worker( addr, port, config.memoryLimit == 0 ? -1 : ( config.memoryLimitPercent * tracy::GetPhysicalMemorySize() / 100 ), SymbolResolutionConfigFromConfig(config))

To parse Config in the Tracy view, we add a function in Traview.hpp to avoid including Config in the worker files.

, m_staticView( false )
, m_viewMode( ViewMode::LastFrames )
, m_viewModeHeuristicTry( true )
Expand Down Expand Up @@ -66,10 +66,11 @@ View::View( void(*cbMainThread)(const std::function<void()>&, bool), const char*
{
InitTextEditor();
SetupConfig( config );

}

View::View( void(*cbMainThread)(const std::function<void()>&, bool), FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, SetScaleCallback sscb, AttentionCallback acb, const Config& config, AchievementsMgr* amgr )
: m_worker( f )
: m_worker( f, { config.symbolsAttemptResolutionByServer, config.symbolsPreventResolutionByClient }, EventType::All, true, false )
, m_filename( f.GetFilename() )
, m_staticView( true )
, m_viewMode( ViewMode::Paused )
Expand Down Expand Up @@ -912,6 +913,18 @@ bool View::DrawImpl()
ImGui::SameLine();
ToggleButton( ICON_FA_FINGERPRINT " Info", m_showInfo );
ImGui::SameLine();

if( m_filename.empty() ) // Can't modify when loading from file
{
ImGui::SameLine();
if (ImGui::Button( ICON_FA_USER_SECRET " Resolve Symbols"))
{
// TODO: Make it async ?
m_worker.ResolveSymbolLocally();
}

}

if( ImGui::Button( ICON_FA_SCREWDRIVER_WRENCH ) ) ImGui::OpenPopup( "ToolsPopup" );
if( ImGui::BeginPopup( "ToolsPopup" ) )
{
Expand Down
4 changes: 3 additions & 1 deletion profiler/src/profiler/TracyView_Compare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,9 @@ void View::DrawCompare()
m_compare.loadThread = std::thread( [this, f] {
try
{
m_compare.second = std::make_unique<Worker>( *f, EventType::SourceCache );
tracy::Worker::SymbolResolutionConfig symConfig{};
symConfig.m_attemptResolutionByWorker = false;
m_compare.second = std::make_unique<Worker>( *f, symConfig, EventType::SourceCache );
m_compare.userData = std::make_unique<UserData>( m_compare.second->GetCaptureProgram().c_str(), m_compare.second->GetCaptureTime() );
m_compare.diffDirection = m_worker.GetCaptureTime() < m_compare.second->GetCaptureTime();
}
Expand Down
21 changes: 1 addition & 20 deletions public/TracyClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

#include "common/tracy_lz4.cpp"
#include "client/TracyProfiler.cpp"
#include "client/TracyCallstack.cpp"
#include "common/TracyCallstack.cpp"
#include "client/TracySysPower.cpp"
#include "client/TracySysTime.cpp"
#include "client/TracySysTrace.cpp"
Expand All @@ -32,27 +32,8 @@
#include "client/TracyOverride.cpp"
#include "client/TracyKCore.cpp"

#if defined(TRACY_HAS_CALLSTACK)
# if TRACY_HAS_CALLSTACK == 2 || TRACY_HAS_CALLSTACK == 3 || TRACY_HAS_CALLSTACK == 4 || TRACY_HAS_CALLSTACK == 6
# include "libbacktrace/alloc.cpp"
# include "libbacktrace/dwarf.cpp"
# include "libbacktrace/fileline.cpp"
# include "libbacktrace/mmapio.cpp"
# include "libbacktrace/posix.cpp"
# include "libbacktrace/sort.cpp"
# include "libbacktrace/state.cpp"
# if TRACY_HAS_CALLSTACK == 4
# include "libbacktrace/macho.cpp"
# else
# include "libbacktrace/elf.cpp"
# endif
# include "common/TracyStackFrames.cpp"
# endif
#endif

#ifdef _MSC_VER
# pragma comment(lib, "ws2_32.lib")
# pragma comment(lib, "dbghelp.lib")
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How are all these removals handled now? They are still needed, aren't they?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, they are still handled. Since TracyCallstack.cpp is now shared between the client and server, the server also requires symbol-related dependencies. Therefore, all of those have been centralized in TracyCallstack.cpp.

# pragma comment(lib, "advapi32.lib")
# pragma comment(lib, "user32.lib")
# pragma warning(pop)
Expand Down
Loading