mirror of
https://github.com/wolfpld/tracy
synced 2025-04-29 12:23:53 +00:00
Substitute source file names in source view.
This commit is contained in:
parent
01d7fefe52
commit
7a6bc6f554
@ -10,6 +10,7 @@
|
|||||||
#include "TracyPrint.hpp"
|
#include "TracyPrint.hpp"
|
||||||
#include "TracySort.hpp"
|
#include "TracySort.hpp"
|
||||||
#include "TracySourceView.hpp"
|
#include "TracySourceView.hpp"
|
||||||
|
#include "TracyView.hpp"
|
||||||
#include "TracyWorker.hpp"
|
#include "TracyWorker.hpp"
|
||||||
|
|
||||||
#include "IconsFontAwesome5.h"
|
#include "IconsFontAwesome5.h"
|
||||||
@ -46,7 +47,7 @@ SourceView::~SourceView()
|
|||||||
delete[] m_data;
|
delete[] m_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SourceView::OpenSource( const char* fileName, int line )
|
void SourceView::OpenSource( const char* fileName, int line, const View& view )
|
||||||
{
|
{
|
||||||
m_targetLine = line;
|
m_targetLine = line;
|
||||||
m_selectedLine = line;
|
m_selectedLine = line;
|
||||||
@ -55,11 +56,11 @@ void SourceView::OpenSource( const char* fileName, int line )
|
|||||||
m_symAddr = 0;
|
m_symAddr = 0;
|
||||||
m_sourceFiles.clear();
|
m_sourceFiles.clear();
|
||||||
|
|
||||||
ParseSource( fileName, nullptr );
|
ParseSource( fileName, nullptr, view );
|
||||||
assert( !m_lines.empty() );
|
assert( !m_lines.empty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, const Worker& worker )
|
void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, const Worker& worker, const View& view )
|
||||||
{
|
{
|
||||||
m_targetLine = line;
|
m_targetLine = line;
|
||||||
m_targetAddr = symAddr;
|
m_targetAddr = symAddr;
|
||||||
@ -69,7 +70,7 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr,
|
|||||||
m_selectedAddresses.clear();
|
m_selectedAddresses.clear();
|
||||||
m_selectedAddresses.emplace( symAddr );
|
m_selectedAddresses.emplace( symAddr );
|
||||||
|
|
||||||
ParseSource( fileName, &worker );
|
ParseSource( fileName, &worker, view );
|
||||||
Disassemble( baseAddr, worker );
|
Disassemble( baseAddr, worker );
|
||||||
SelectLine( line, &worker, true, symAddr );
|
SelectLine( line, &worker, true, symAddr );
|
||||||
|
|
||||||
@ -91,7 +92,7 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SourceView::ParseSource( const char* fileName, const Worker* worker )
|
void SourceView::ParseSource( const char* fileName, const Worker* worker, const View& view )
|
||||||
{
|
{
|
||||||
if( m_file != fileName )
|
if( m_file != fileName )
|
||||||
{
|
{
|
||||||
@ -100,7 +101,7 @@ void SourceView::ParseSource( const char* fileName, const Worker* worker )
|
|||||||
m_lines.clear();
|
m_lines.clear();
|
||||||
if( fileName )
|
if( fileName )
|
||||||
{
|
{
|
||||||
FILE* f = fopen( fileName, "rb" );
|
FILE* f = fopen( view.SourceSubstitution( fileName ), "rb" );
|
||||||
fseek( f, 0, SEEK_END );
|
fseek( f, 0, SEEK_END );
|
||||||
const auto sz = ftell( f );
|
const auto sz = ftell( f );
|
||||||
fseek( f, 0, SEEK_SET );
|
fseek( f, 0, SEEK_SET );
|
||||||
@ -589,7 +590,7 @@ void SourceView::RenderSymbolView( const Worker& worker, const View& view )
|
|||||||
}
|
}
|
||||||
if( line > 0 || sym->size.Val() > 0 )
|
if( line > 0 || sym->size.Val() > 0 )
|
||||||
{
|
{
|
||||||
OpenSymbol( file, line, jumpOut, jumpOut, worker );
|
OpenSymbol( file, line, jumpOut, jumpOut, worker, view );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -666,7 +667,7 @@ void SourceView::RenderSymbolSourceView( uint32_t iptotal, unordered_flat_map<ui
|
|||||||
ImGui::PushID( v.first );
|
ImGui::PushID( v.first );
|
||||||
if( ImGui::Selectable( fstr, fstr == m_file ) )
|
if( ImGui::Selectable( fstr, fstr == m_file ) )
|
||||||
{
|
{
|
||||||
ParseSource( fstr, &worker );
|
ParseSource( fstr, &worker, view );
|
||||||
m_targetLine = v.second;
|
m_targetLine = v.second;
|
||||||
SelectLine( v.second, &worker );
|
SelectLine( v.second, &worker );
|
||||||
}
|
}
|
||||||
@ -754,7 +755,7 @@ void SourceView::RenderSymbolSourceView( uint32_t iptotal, unordered_flat_map<ui
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ParseSource( fstr, &worker );
|
ParseSource( fstr, &worker, view );
|
||||||
m_targetLine = line;
|
m_targetLine = line;
|
||||||
SelectLine( line, &worker );
|
SelectLine( line, &worker );
|
||||||
}
|
}
|
||||||
@ -1381,7 +1382,7 @@ void SourceView::RenderAsmLine( const AsmLine& line, uint32_t ipcnt, uint32_t ip
|
|||||||
}
|
}
|
||||||
else if( SourceFileValid( fileName, worker.GetCaptureTime(), view ) )
|
else if( SourceFileValid( fileName, worker.GetCaptureTime(), view ) )
|
||||||
{
|
{
|
||||||
ParseSource( fileName, &worker );
|
ParseSource( fileName, &worker, view );
|
||||||
m_targetLine = srcline;
|
m_targetLine = srcline;
|
||||||
SelectLine( srcline, &worker, false );
|
SelectLine( srcline, &worker, false );
|
||||||
m_displayMode = DisplayMixed;
|
m_displayMode = DisplayMixed;
|
||||||
|
@ -50,14 +50,14 @@ public:
|
|||||||
SourceView( ImFont* font );
|
SourceView( ImFont* font );
|
||||||
~SourceView();
|
~SourceView();
|
||||||
|
|
||||||
void OpenSource( const char* fileName, int line );
|
void OpenSource( const char* fileName, int line, const View& view );
|
||||||
void OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, const Worker& worker );
|
void OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, const Worker& worker, const View& view );
|
||||||
void Render( const Worker& worker, const View& view );
|
void Render( const Worker& worker, const View& view );
|
||||||
|
|
||||||
void CalcInlineStats( bool val ) { m_calcInlineStats = val; }
|
void CalcInlineStats( bool val ) { m_calcInlineStats = val; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ParseSource( const char* fileName, const Worker* worker );
|
void ParseSource( const char* fileName, const Worker* worker, const View& view );
|
||||||
bool Disassemble( uint64_t symAddr, const Worker& worker );
|
bool Disassemble( uint64_t symAddr, const Worker& worker );
|
||||||
|
|
||||||
void RenderSimpleSourceView();
|
void RenderSimpleSourceView();
|
||||||
|
@ -195,14 +195,14 @@ void View::ViewSource( const char* fileName, int line )
|
|||||||
{
|
{
|
||||||
assert( fileName );
|
assert( fileName );
|
||||||
m_sourceViewFile = fileName;
|
m_sourceViewFile = fileName;
|
||||||
m_sourceView->OpenSource( fileName, line );
|
m_sourceView->OpenSource( fileName, line, *this );
|
||||||
}
|
}
|
||||||
|
|
||||||
void View::ViewSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr )
|
void View::ViewSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr )
|
||||||
{
|
{
|
||||||
assert( fileName || symAddr );
|
assert( fileName || symAddr );
|
||||||
m_sourceViewFile = fileName ? fileName : (const char*)~uint64_t( 0 );
|
m_sourceViewFile = fileName ? fileName : (const char*)~uint64_t( 0 );
|
||||||
m_sourceView->OpenSymbol( fileName, line, baseAddr, symAddr, m_worker );
|
m_sourceView->OpenSymbol( fileName, line, baseAddr, symAddr, m_worker, *this );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool View::ViewDispatch( const char* fileName, int line, uint64_t symAddr )
|
bool View::ViewDispatch( const char* fileName, int line, uint64_t symAddr )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user