DynamoRIO API
analyzer_t Class Reference

#include <analyzer.h>

Inherited by analyzer_multi_t.

Data Structures

struct  analyzer_shard_data_t
 

Public Member Functions

 analyzer_t ()
 
virtual ~analyzer_t ()
 
virtual bool operator! ()
 
virtual std::string get_error_string ()
 
 analyzer_t (const std::string &trace_path, analysis_tool_t **tools, int num_tools, int worker_count=0)
 
virtual bool run ()
 
virtual bool print_stats ()
 
 analyzer_t (const std::string &trace_path)
 
virtual reader_t & begin ()
 
 analyzer_t ()
 
virtual ~analyzer_t ()
 
virtual bool operator! ()
 
virtual std::string get_error_string ()
 
 analyzer_t (const std::string &trace_path, analysis_tool_t **tools, int num_tools, int worker_count=0)
 
virtual bool run ()
 
virtual bool print_stats ()
 
 analyzer_t (const std::string &trace_path)
 
virtual reader_t & begin ()
 

Detailed Description

An analyzer is the top-level driver of a set of trace analysis tools. It supports two different modes of operation: either it iterates over the trace and calls the process_memref() routine of each tool, or it exposes an iteration interface to external control code.

Constructor & Destructor Documentation

◆ analyzer_t() [1/6]

analyzer_t::analyzer_t ( )

Usage: errors encountered during a constructor will set a flag that should be queried via operator!(). If operator!() returns true, get_error_string() can be used to try to obtain more information.

◆ ~analyzer_t() [1/2]

virtual analyzer_t::~analyzer_t ( )
virtual

Destructor.

◆ analyzer_t() [2/6]

analyzer_t::analyzer_t ( const std::string &  trace_path,
analysis_tool_t **  tools,
int  num_tools,
int  worker_count = 0 
)

We have two usage models: one where there are multiple tools and the trace iteration is performed by analyzer_t and supports parallel trace analysis, and another where a single tool controls the iteration.

The default, simpler, multiple-tool-supporting model uses this constructor. The analyzer will reference the tools array passed in during its lifetime: it does not make a copy. The user must free them afterward. The analyzer calls the initialize() function on each tool before use.

◆ analyzer_t() [3/6]

analyzer_t::analyzer_t ( const std::string &  trace_path)

The alternate usage model exposes the iterator to a single tool. This model does not currently support parallel shard analysis.

◆ analyzer_t() [4/6]

analyzer_t::analyzer_t ( )

Usage: errors encountered during a constructor will set a flag that should be queried via operator!(). If operator!() returns true, get_error_string() can be used to try to obtain more information.

◆ ~analyzer_t() [2/2]

virtual analyzer_t::~analyzer_t ( )
virtual

Destructor.

◆ analyzer_t() [5/6]

analyzer_t::analyzer_t ( const std::string &  trace_path,
analysis_tool_t **  tools,
int  num_tools,
int  worker_count = 0 
)

We have two usage models: one where there are multiple tools and the trace iteration is performed by analyzer_t and supports parallel trace analysis, and another where a single tool controls the iteration.

The default, simpler, multiple-tool-supporting model uses this constructor. The analyzer will reference the tools array passed in during its lifetime: it does not make a copy. The user must free them afterward. The analyzer calls the initialize() function on each tool before use.

◆ analyzer_t() [6/6]

analyzer_t::analyzer_t ( const std::string &  trace_path)

The alternate usage model exposes the iterator to a single tool. This model does not currently support parallel shard analysis.

Member Function Documentation

◆ begin() [1/2]

virtual reader_t& analyzer_t::begin ( )
virtual

As the iterator is more heavyweight than regular container iterators we hold it internally and return a reference. Copying will fail to compile as reader_t is virtual, reminding the caller of begin() to use a reference. This usage model supports only a single user of the iterator: the multi-tool model above should be used if multiple tools are involved.

◆ begin() [2/2]

virtual reader_t& analyzer_t::begin ( )
virtual

As the iterator is more heavyweight than regular container iterators we hold it internally and return a reference. Copying will fail to compile as reader_t is virtual, reminding the caller of begin() to use a reference. This usage model supports only a single user of the iterator: the multi-tool model above should be used if multiple tools are involved.

◆ get_error_string() [1/2]

virtual std::string analyzer_t::get_error_string ( )
virtual

Returns further information on an error in initializing the analyzer.

◆ get_error_string() [2/2]

virtual std::string analyzer_t::get_error_string ( )
virtual

Returns further information on an error in initializing the analyzer.

◆ operator!() [1/2]

virtual bool analyzer_t::operator! ( )
virtual

Returns whether the analyzer was created successfully.

◆ operator!() [2/2]

virtual bool analyzer_t::operator! ( )
virtual

Returns whether the analyzer was created successfully.

◆ print_stats() [1/2]

virtual bool analyzer_t::print_stats ( )
virtual

Presents the results of the analysis.

◆ print_stats() [2/2]

virtual bool analyzer_t::print_stats ( )
virtual

Presents the results of the analysis.

◆ run() [1/2]

virtual bool analyzer_t::run ( )
virtual

Launches the analysis process.

◆ run() [2/2]

virtual bool analyzer_t::run ( )
virtual

Launches the analysis process.


The documentation for this class was generated from the following file: