mirror of
https://github.com/wolfpld/tracy
synced 2025-04-30 20:53:52 +00:00
Allow filtering out external frames in flame graph.
This commit is contained in:
parent
70fc28506f
commit
9d839c52d1
@ -228,16 +228,29 @@ void View::BuildFlameGraph( const Worker& worker, std::vector<FlameGraphItem>& d
|
|||||||
const auto symaddr = frame.symAddr;
|
const auto symaddr = frame.symAddr;
|
||||||
if( symaddr != 0 )
|
if( symaddr != 0 )
|
||||||
{
|
{
|
||||||
auto it = std::find_if( vec->begin(), vec->end(), [symaddr]( const auto& v ) { return v.srcloc == symaddr; } );
|
bool active = true;
|
||||||
if( it == vec->end() )
|
if( !m_flameExternal )
|
||||||
{
|
{
|
||||||
vec->emplace_back( FlameGraphItem { (int64_t)symaddr, 1, frame.name } );
|
auto filename = m_worker.GetString( frame.file );
|
||||||
vec = &vec->back().children;
|
auto image = frameData->imageName.Active() ? m_worker.GetString( frameData->imageName ) : nullptr;
|
||||||
|
if( IsFrameExternal( filename, image ) )
|
||||||
|
{
|
||||||
|
active = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
if( active )
|
||||||
{
|
{
|
||||||
it->time++;
|
auto it = std::find_if( vec->begin(), vec->end(), [symaddr]( const auto& v ) { return v.srcloc == symaddr; } );
|
||||||
vec = &it->children;
|
if( it == vec->end() )
|
||||||
|
{
|
||||||
|
vec->emplace_back( FlameGraphItem { (int64_t)symaddr, 1, frame.name } );
|
||||||
|
vec = &vec->back().children;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
it->time++;
|
||||||
|
vec = &it->children;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user