mirror of
https://github.com/wolfpld/tracy
synced 2025-05-01 13:13:53 +00:00
Maintain a history of viewed symbols.
This commit is contained in:
parent
5e31910510
commit
2a6a082c93
@ -606,7 +606,7 @@ void SourceView::OpenSource( const char* fileName, int line, const View& view, c
|
|||||||
assert( !m_source.empty() );
|
assert( !m_source.empty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, Worker& worker, const View& view )
|
void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, Worker& worker, const View& view, bool updateHistory )
|
||||||
{
|
{
|
||||||
m_targetLine = line;
|
m_targetLine = line;
|
||||||
m_targetAddr = symAddr;
|
m_targetAddr = symAddr;
|
||||||
@ -623,6 +623,19 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr,
|
|||||||
SelectViewMode();
|
SelectViewMode();
|
||||||
|
|
||||||
if( !worker.GetInlineSymbolList( baseAddr, m_codeLen ) ) m_calcInlineStats = false;
|
if( !worker.GetInlineSymbolList( baseAddr, m_codeLen ) ) m_calcInlineStats = false;
|
||||||
|
|
||||||
|
if( updateHistory )
|
||||||
|
{
|
||||||
|
m_history.erase( m_history.begin() + m_historyCursor, m_history.end() );
|
||||||
|
|
||||||
|
History entry = { fileName, line, baseAddr, symAddr };
|
||||||
|
if( m_history.empty() || memcmp( &m_history.back(), &entry, sizeof( History ) ) != 0 )
|
||||||
|
{
|
||||||
|
m_history.emplace_back( entry );
|
||||||
|
if( m_history.size() > 100 ) m_history.erase( m_history.begin() );
|
||||||
|
m_historyCursor = m_history.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SourceView::SelectViewMode()
|
void SourceView::SelectViewMode()
|
||||||
|
@ -153,6 +153,14 @@ private:
|
|||||||
unordered_flat_map<uint64_t, AddrStat> hwCountSrc, hwCountAsm;
|
unordered_flat_map<uint64_t, AddrStat> hwCountSrc, hwCountAsm;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct History
|
||||||
|
{
|
||||||
|
const char* fileName;
|
||||||
|
int64_t line;
|
||||||
|
uint64_t baseAddr;
|
||||||
|
uint64_t symAddr;
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SourceView();
|
SourceView();
|
||||||
|
|
||||||
@ -160,7 +168,7 @@ public:
|
|||||||
void SetCpuId( uint32_t cpuid );
|
void SetCpuId( uint32_t cpuid );
|
||||||
|
|
||||||
void OpenSource( const char* fileName, int line, const View& view, const Worker& worker );
|
void OpenSource( const char* fileName, int line, const View& view, const Worker& worker );
|
||||||
void OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, Worker& worker, const View& view );
|
void OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, Worker& worker, const View& view, bool updateHistory = true );
|
||||||
void Render( Worker& worker, View& view );
|
void Render( Worker& worker, View& view );
|
||||||
|
|
||||||
void CalcInlineStats( bool val ) { m_calcInlineStats = val; }
|
void CalcInlineStats( bool val ) { m_calcInlineStats = val; }
|
||||||
@ -287,6 +295,9 @@ private:
|
|||||||
size_t sel;
|
size_t sel;
|
||||||
std::vector<uint64_t> target;
|
std::vector<uint64_t> target;
|
||||||
} m_asmTarget;
|
} m_asmTarget;
|
||||||
|
|
||||||
|
std::vector<History> m_history;
|
||||||
|
size_t m_historyCursor = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user