1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-30 04:43:53 +00:00

Preserve inlined symbol names.

This commit is contained in:
Bartosz Taudul 2020-02-27 12:39:05 +01:00
parent 374ddbe2a6
commit 9d718eb1e8
2 changed files with 12 additions and 5 deletions

View File

@ -4818,14 +4818,15 @@ void Worker::ProcessCallstackFrame( const QueueCallstackFrame& ev )
{ {
const auto idx = m_callstackFrameStaging->size - m_pendingCallstackSubframes; const auto idx = m_callstackFrameStaging->size - m_pendingCallstackSubframes;
m_callstackFrameStaging->data[idx].name = StringIdx( nit->second.idx ); const auto name = StringIdx( nit->second.idx );
m_callstackFrameStaging->data[idx].name = name;
m_callstackFrameStaging->data[idx].file = StringIdx( fit->second.idx ); m_callstackFrameStaging->data[idx].file = StringIdx( fit->second.idx );
m_callstackFrameStaging->data[idx].line = ev.line; m_callstackFrameStaging->data[idx].line = ev.line;
m_callstackFrameStaging->data[idx].symAddr = ev.symAddr; m_callstackFrameStaging->data[idx].symAddr = ev.symAddr;
if( ev.symAddr != 0 && m_data.symbolMap.find( ev.symAddr ) == m_data.symbolMap.end() && m_pendingSymbols.find( ev.symAddr ) == m_pendingSymbols.end() ) if( ev.symAddr != 0 && m_data.symbolMap.find( ev.symAddr ) == m_data.symbolMap.end() && m_pendingSymbols.find( ev.symAddr ) == m_pendingSymbols.end() )
{ {
m_pendingSymbols.emplace( ev.symAddr, m_callstackFrameStaging->imageName ); m_pendingSymbols.emplace( ev.symAddr, SymbolPending { name, m_callstackFrameStaging->imageName } );
Query( ServerQuerySymbol, ev.symAddr ); Query( ServerQuerySymbol, ev.symAddr );
} }
@ -4856,10 +4857,10 @@ void Worker::ProcessSymbolInformation( const QueueCallstackFrame& ev )
assert( fit != m_pendingCustomStrings.end() ); assert( fit != m_pendingCustomStrings.end() );
SymbolData sd; SymbolData sd;
sd.name = StringIdx( nit->second.idx ); sd.name = it->second.name;
sd.file = StringIdx( fit->second.idx ); sd.file = StringIdx( fit->second.idx );
sd.line = ev.line; sd.line = ev.line;
sd.imageName = it->second; sd.imageName = it->second.imageName;
m_data.symbolMap.emplace( ev.symAddr, std::move( sd ) ); m_data.symbolMap.emplace( ev.symAddr, std::move( sd ) );
m_pendingSymbols.erase( it ); m_pendingSymbols.erase( it );

View File

@ -175,6 +175,12 @@ private:
} }
}; };
struct SymbolPending
{
StringIdx name;
StringIdx imageName;
};
struct DataBlock struct DataBlock
{ {
std::shared_mutex lock; std::shared_mutex lock;
@ -704,7 +710,7 @@ private:
unordered_flat_map<uint64_t, ThreadData*> m_threadMap; unordered_flat_map<uint64_t, ThreadData*> m_threadMap;
unordered_flat_map<uint64_t, NextCallstack> m_nextCallstack; unordered_flat_map<uint64_t, NextCallstack> m_nextCallstack;
unordered_flat_map<uint64_t, FrameImagePending> m_pendingFrameImageData; unordered_flat_map<uint64_t, FrameImagePending> m_pendingFrameImageData;
unordered_flat_map<uint64_t, StringIdx> m_pendingSymbols; unordered_flat_map<uint64_t, SymbolPending> m_pendingSymbols;
uint32_t m_pendingStrings; uint32_t m_pendingStrings;
uint32_t m_pendingThreads; uint32_t m_pendingThreads;