1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Allow filtering out kernel symbols from statistics view.

This commit is contained in:
Bartosz Taudul 2021-06-16 01:43:09 +02:00
parent f145ca5897
commit d2ebe341f2
No known key found for this signature in database
GPG Key ID: B7FE2008B7575DF3
2 changed files with 11 additions and 6 deletions

View File

@ -12508,6 +12508,10 @@ void View::DrawStatistics()
ImGui::SameLine(); ImGui::SameLine();
ImGui::Spacing(); ImGui::Spacing();
ImGui::SameLine(); ImGui::SameLine();
ImGui::Checkbox( ICON_FA_HAT_WIZARD " Include kernel", &m_statShowKernel );
ImGui::SameLine();
ImGui::Spacing();
ImGui::SameLine();
} }
if( m_statMode == 1 && !m_worker.AreSymbolSamplesReady() ) if( m_statMode == 1 && !m_worker.AreSymbolSamplesReady() )
{ {
@ -12731,13 +12735,13 @@ void View::DrawStatistics()
if( m_showAllSymbols ) if( m_showAllSymbols )
{ {
data.reserve( symMap.size() ); data.reserve( symMap.size() );
if( m_statisticsFilter.IsActive() || m_statisticsImageFilter.IsActive() ) if( m_statisticsFilter.IsActive() || m_statisticsImageFilter.IsActive() || !m_statShowKernel )
{ {
for( auto& v : symMap ) for( auto& v : symMap )
{ {
const auto name = m_worker.GetString( v.second.name ); const auto name = m_worker.GetString( v.second.name );
const auto image = m_worker.GetString( v.second.imageName ); const auto image = m_worker.GetString( v.second.imageName );
bool pass = m_statisticsFilter.PassFilter( name ) && m_statisticsImageFilter.PassFilter( image ); bool pass = ( m_statShowKernel || ( v.first >> 63 ) == 0 ) && m_statisticsFilter.PassFilter( name ) && m_statisticsImageFilter.PassFilter( image );
if( !pass && v.second.size.Val() == 0 ) if( !pass && v.second.size.Val() == 0 )
{ {
const auto parentAddr = m_worker.GetSymbolForAddress( v.first ); const auto parentAddr = m_worker.GetSymbolForAddress( v.first );
@ -12747,7 +12751,7 @@ void View::DrawStatistics()
if( pit != symMap.end() ) if( pit != symMap.end() )
{ {
const auto parentName = m_worker.GetString( pit->second.name ); const auto parentName = m_worker.GetString( pit->second.name );
pass = m_statisticsFilter.PassFilter( parentName ) && m_statisticsImageFilter.PassFilter( image ); pass = ( m_statShowKernel || ( parentAddr >> 63 ) == 0 ) && m_statisticsFilter.PassFilter( parentName ) && m_statisticsImageFilter.PassFilter( image );
} }
} }
} }
@ -12834,7 +12838,7 @@ void View::DrawStatistics()
else else
{ {
data.reserve( symStat.size() ); data.reserve( symStat.size() );
if( m_statisticsFilter.IsActive() || m_statisticsImageFilter.IsActive() ) if( m_statisticsFilter.IsActive() || m_statisticsImageFilter.IsActive() || !m_statShowKernel )
{ {
for( auto& v : symStat ) for( auto& v : symStat )
{ {
@ -12843,7 +12847,7 @@ void View::DrawStatistics()
{ {
const auto name = m_worker.GetString( sit->second.name ); const auto name = m_worker.GetString( sit->second.name );
const auto image = m_worker.GetString( sit->second.imageName ); const auto image = m_worker.GetString( sit->second.imageName );
bool pass = m_statisticsFilter.PassFilter( name ) && m_statisticsImageFilter.PassFilter( image ); bool pass = ( m_statShowKernel || ( v.first >> 63 ) == 0 ) && m_statisticsFilter.PassFilter( name ) && m_statisticsImageFilter.PassFilter( image );
if( !pass && sit->second.size.Val() == 0 ) if( !pass && sit->second.size.Val() == 0 )
{ {
const auto parentAddr = m_worker.GetSymbolForAddress( v.first ); const auto parentAddr = m_worker.GetSymbolForAddress( v.first );
@ -12853,7 +12857,7 @@ void View::DrawStatistics()
if( pit != symMap.end() ) if( pit != symMap.end() )
{ {
const auto parentName = m_worker.GetString( pit->second.name ); const auto parentName = m_worker.GetString( pit->second.name );
pass = m_statisticsFilter.PassFilter( parentName ) && m_statisticsImageFilter.PassFilter( image ); pass = ( m_statShowKernel || ( parentAddr >> 63 ) == 0 ) && m_statisticsFilter.PassFilter( parentName ) && m_statisticsImageFilter.PassFilter( image );
} }
} }
} }

View File

@ -398,6 +398,7 @@ private:
bool m_showUnknownFrames = true; bool m_showUnknownFrames = true;
bool m_statSeparateInlines = false; bool m_statSeparateInlines = false;
bool m_statShowAddress = false; bool m_statShowAddress = false;
bool m_statShowKernel = true;
bool m_groupChildrenLocations = false; bool m_groupChildrenLocations = false;
bool m_allocTimeRelativeToZone = true; bool m_allocTimeRelativeToZone = true;
bool m_ctxSwitchTimeRelativeToZone = true; bool m_ctxSwitchTimeRelativeToZone = true;