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:
parent
374ddbe2a6
commit
9d718eb1e8
@ -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 );
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user