LLDB mainline
|
Class used to identify anomalies in traces, which should often indicate a fatal error in the trace. More...
Public Member Functions | |
PSBBlockAnomalyDetector (pt_insn_decoder &decoder, TraceIntelPT &trace_intel_pt, DecodedThread &decoded_thread) | |
Error | DetectAnomaly () |
Private Member Functions | |
std::optional< uint64_t > | TryIdentifyInfiniteLoop () |
void | RefreshPacketOffset () |
Private Attributes | |
pt_insn_decoder & | m_decoder |
DecodedThread & | m_decoded_thread |
lldb::addr_t | m_last_packet_offset = LLDB_INVALID_ADDRESS |
uint64_t | m_insn_count_at_last_packet_offset = 0 |
uint64_t | m_infinite_decoding_loop_threshold |
uint64_t | m_next_infinite_decoding_loop_threshold |
uint64_t | m_extremely_large_decoding_threshold |
Class used to identify anomalies in traces, which should often indicate a fatal error in the trace.
Definition at line 134 of file LibiptDecoder.cpp.
|
inline |
Definition at line 136 of file LibiptDecoder.cpp.
References lldb_private::trace_intel_pt::TraceIntelPT::PluginProperties::GetExtremelyLargeDecodingThreshold(), lldb_private::trace_intel_pt::TraceIntelPT::GetGlobalProperties(), lldb_private::trace_intel_pt::TraceIntelPT::PluginProperties::GetInfiniteDecodingLoopVerificationThreshold(), m_extremely_large_decoding_threshold, m_infinite_decoding_loop_threshold, and m_next_infinite_decoding_loop_threshold.
|
inline |
Definition at line 153 of file LibiptDecoder.cpp.
References lldb_private::trace_intel_pt::DecodedThread::GetTotalInstructionCount(), m_decoded_thread, m_extremely_large_decoding_threshold, m_insn_count_at_last_packet_offset, m_next_infinite_decoding_loop_threshold, RefreshPacketOffset(), and TryIdentifyInfiniteLoop().
Referenced by PSBBlockDecoder::AppendInstructionAndDetectAnomalies().
|
inlineprivate |
Definition at line 288 of file LibiptDecoder.cpp.
References lldb_private::trace_intel_pt::DecodedThread::GetTotalInstructionCount(), IsLibiptError(), m_decoded_thread, m_decoder, m_infinite_decoding_loop_threshold, m_insn_count_at_last_packet_offset, m_last_packet_offset, and m_next_infinite_decoding_loop_threshold.
Referenced by DetectAnomaly().
|
inlineprivate |
Definition at line 213 of file LibiptDecoder.cpp.
References lldb::eTraceItemKindInstruction, lldb_private::trace_intel_pt::DecodedThread::GetInstructionLoadAddress(), lldb_private::trace_intel_pt::DecodedThread::GetItemKindByIndex(), lldb_private::trace_intel_pt::DecodedThread::GetItemsCount(), and m_decoded_thread.
Referenced by DetectAnomaly().
|
private |
Definition at line 301 of file LibiptDecoder.cpp.
Referenced by DetectAnomaly(), RefreshPacketOffset(), and TryIdentifyInfiniteLoop().
|
private |
Definition at line 300 of file LibiptDecoder.cpp.
Referenced by RefreshPacketOffset().
|
private |
Definition at line 306 of file LibiptDecoder.cpp.
Referenced by DetectAnomaly(), and PSBBlockAnomalyDetector().
|
private |
Definition at line 304 of file LibiptDecoder.cpp.
Referenced by PSBBlockAnomalyDetector(), and RefreshPacketOffset().
|
private |
Definition at line 303 of file LibiptDecoder.cpp.
Referenced by DetectAnomaly(), and RefreshPacketOffset().
|
private |
Definition at line 302 of file LibiptDecoder.cpp.
Referenced by RefreshPacketOffset().
|
private |
Definition at line 305 of file LibiptDecoder.cpp.
Referenced by DetectAnomaly(), PSBBlockAnomalyDetector(), and RefreshPacketOffset().