mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-13 03:41:48 +00:00
Writing traces.
This commit is contained in:
parent
2021b7460a
commit
f9ee2b853c
@ -13,6 +13,7 @@
|
|||||||
#include "../common/TracyProtocol.hpp"
|
#include "../common/TracyProtocol.hpp"
|
||||||
#include "../common/TracySystem.hpp"
|
#include "../common/TracySystem.hpp"
|
||||||
#include "../common/TracyQueue.hpp"
|
#include "../common/TracyQueue.hpp"
|
||||||
|
#include "TracyFileWrite.hpp"
|
||||||
#include "TracyImGui.hpp"
|
#include "TracyImGui.hpp"
|
||||||
#include "TracyView.hpp"
|
#include "TracyView.hpp"
|
||||||
|
|
||||||
@ -771,7 +772,11 @@ void View::DrawConnection()
|
|||||||
const char* fn = "trace.tracy";
|
const char* fn = "trace.tracy";
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
auto f = std::unique_ptr<FileWrite>( FileWrite::Open( fn ) );
|
||||||
|
if( f )
|
||||||
|
{
|
||||||
|
Write( *f );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1465,4 +1470,85 @@ void View::ZoneTooltip( const Event& ev )
|
|||||||
ImGui::EndTooltip();
|
ImGui::EndTooltip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void View::Write( FileWrite& f )
|
||||||
|
{
|
||||||
|
uint64_t sz = m_frames.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
f.Write( m_frames.data(), sizeof( uint64_t ) * sz );
|
||||||
|
|
||||||
|
sz = m_strings.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
for( auto& v : m_strings )
|
||||||
|
{
|
||||||
|
f.Write( &v.first, sizeof( v.first ) );
|
||||||
|
sz = v.second.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
f.Write( v.second.c_str(), v.second.size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
sz = m_threadNames.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
for( auto& v : m_threadNames )
|
||||||
|
{
|
||||||
|
f.Write( &v.first, sizeof( v.first ) );
|
||||||
|
sz = v.second.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
f.Write( v.second.c_str(), v.second.size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
sz = m_customStrings.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
for( auto& v : m_customStrings )
|
||||||
|
{
|
||||||
|
uint64_t ptr = (uint64_t)v;
|
||||||
|
f.Write( &ptr, sizeof( ptr ) );
|
||||||
|
sz = strlen( v );
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
f.Write( v, sz );
|
||||||
|
}
|
||||||
|
|
||||||
|
sz = m_sourceLocation.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
for( auto& v : m_sourceLocation )
|
||||||
|
{
|
||||||
|
f.Write( &v.first, sizeof( v.first ) );
|
||||||
|
f.Write( &v.second, sizeof( v.second ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
sz = m_threads.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
for( auto& thread : m_threads )
|
||||||
|
{
|
||||||
|
f.Write( &thread->id, sizeof( thread->id ) );
|
||||||
|
WriteTimeline( f, thread->timeline );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void View::WriteTimeline( FileWrite& f, const Vector<Event*>& vec )
|
||||||
|
{
|
||||||
|
uint64_t sz = vec.size();
|
||||||
|
f.Write( &sz, sizeof( sz ) );
|
||||||
|
|
||||||
|
for( auto& v : vec )
|
||||||
|
{
|
||||||
|
f.Write( &v->start, sizeof( v->start ) );
|
||||||
|
f.Write( &v->end, sizeof( v->end ) );
|
||||||
|
f.Write( &v->srcloc, sizeof( v->srcloc ) );
|
||||||
|
if( v->text )
|
||||||
|
{
|
||||||
|
uint8_t flag = 1;
|
||||||
|
f.Write( &flag, sizeof( flag ) );
|
||||||
|
f.Write( &v->text->userText, sizeof( v->text->userText ) );
|
||||||
|
f.Write( &v->text->zoneName, sizeof( v->text->zoneName ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uint8_t flag = 0;
|
||||||
|
f.Write( &flag, sizeof( flag ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
WriteTimeline( f, v->child );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ namespace tracy
|
|||||||
{
|
{
|
||||||
|
|
||||||
struct QueueItem;
|
struct QueueItem;
|
||||||
|
class FileWrite;
|
||||||
|
|
||||||
class View
|
class View
|
||||||
{
|
{
|
||||||
@ -93,6 +94,9 @@ private:
|
|||||||
void ZoomToZone( const Event& ev );
|
void ZoomToZone( const Event& ev );
|
||||||
void ZoneTooltip( const Event& ev );
|
void ZoneTooltip( const Event& ev );
|
||||||
|
|
||||||
|
void Write( FileWrite& f );
|
||||||
|
void WriteTimeline( FileWrite& f, const Vector<Event*>& vec );
|
||||||
|
|
||||||
std::string m_addr;
|
std::string m_addr;
|
||||||
|
|
||||||
Socket m_sock;
|
Socket m_sock;
|
||||||
|
Loading…
Reference in New Issue
Block a user