29 inconvertibleErrorCode(),
30 "Thread %" PRIu64
" can't be traced as the process trace size limit "
31 "has been reached. Consider retracing with a higher "
49Expected<std::optional<std::vector<uint8_t>>>
55Expected<std::unique_ptr<IntelPTPerThreadProcessTrace>>
57 ArrayRef<lldb::tid_t> current_tids) {
58 std::unique_ptr<IntelPTPerThreadProcessTrace> trace(
61 Error
error = Error::success();
63 error = joinErrors(std::move(
error), trace->TraceStart(tid));
65 return std::move(
error);
66 return std::move(trace);
static llvm::raw_ostream & error(Stream &strm)
static llvm::Error createStringError(const char *format, Args &&...args)
bool TracesThread(lldb::tid_t tid) const override
llvm::Error TraceStart(lldb::tid_t tid) override
Start tracing the thread given by its tid.
IntelPTThreadTraceCollection m_thread_traces
TraceIntelPTGetStateResponse GetState() override
Construct a minimal jLLDBTraceGetState response for this process trace.
TraceIntelPTStartRequest m_tracing_params
Params used to trace threads when the user started "process tracing".
llvm::Expected< std::optional< std::vector< uint8_t > > > TryGetBinaryData(const TraceGetBinaryDataRequest &request) override
llvm::Error TraceStop(lldb::tid_t tid) override
Stop tracing the thread given by its tid.
static llvm::Expected< std::unique_ptr< IntelPTPerThreadProcessTrace > > Start(const TraceIntelPTStartRequest &request, llvm::ArrayRef< lldb::tid_t > current_tids)
Start tracing the current process by tracing each of its tids individually.
IntelPTPerThreadProcessTrace(const TraceIntelPTStartRequest &request)
This class wraps a single perf event collecting intel pt data in a single buffer.
size_t GetIptTraceSize() const
A class that represents a running process on the host machine.
static const char * kIptTrace
jLLDBTraceGetBinaryData gdb-remote packet
std::vector< TraceThreadState > traced_threads
jLLDBTraceStart gdb-remote packet