mirror of
https://github.com/wolfpld/tracy.git
synced 2025-03-20 07:40:02 +08:00
Filename in callstack frame is not a persistent pointer.
This commit is contained in:
@@ -78,15 +78,21 @@ CallstackEntry DecodeCallstackPtr( uint64_t ptr )
|
||||
line.SizeOfStruct = sizeof( IMAGEHLP_LINE64 );
|
||||
if( SymGetLineFromAddr64( proc, ptr, &displacement, &line ) == 0 )
|
||||
{
|
||||
ret.file = "[unknown]";
|
||||
line.FileName = "[unknown]";
|
||||
ret.line = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret.file = line.FileName;
|
||||
ret.line = line.LineNumber;
|
||||
}
|
||||
|
||||
const auto fsz = strlen( line.FileName );
|
||||
auto file = (char*)tracy_malloc( fsz + 1 );
|
||||
memcpy( file, line.FileName, fsz );
|
||||
file[fsz] = '\0';
|
||||
|
||||
ret.file = file;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -565,6 +565,7 @@ void Profiler::SendCallstackFrame( uint64_t ptr )
|
||||
auto frame = DecodeCallstackPtr( ptr );
|
||||
|
||||
SendString( uint64_t( frame.name ), frame.name, QueueType::CustomStringData );
|
||||
SendString( uint64_t( frame.file ), frame.file, QueueType::CustomStringData );
|
||||
|
||||
QueueItem item;
|
||||
MemWrite( &item.hdr.type, QueueType::CallstackFrame );
|
||||
@@ -577,6 +578,7 @@ void Profiler::SendCallstackFrame( uint64_t ptr )
|
||||
AppendData( &item, QueueDataSize[(int)QueueType::CallstackFrame] );
|
||||
|
||||
tracy_free( (void*)frame.name );
|
||||
tracy_free( (void*)frame.file );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user