Crashpad
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Loading...
Searching...
No Matches
crashpad::PtraceClient Class Reference

Implements a PtraceConnection over a socket. More...

#include "util/linux/ptrace_client.h"

Inheritance diagram for crashpad::PtraceClient:
[legend]
Collaboration diagram for crashpad::PtraceClient:
[legend]

Public Member Functions

 PtraceClient (const PtraceClient &)=delete
 
PtraceClientoperator= (const PtraceClient &)=delete
 
bool Initialize (int sock, pid_t pid)
 Initializes this object.
 
pid_t GetProcessID () override
 Returns the process ID of the connected process.
 
bool Attach (pid_t tid) override
 Adds a new thread to this connection.
 
bool Is64Bit () override
 Returns true if connected to a 64-bit process.
 
bool GetThreadInfo (pid_t tid, ThreadInfo *info) override
 Retrieves a ThreadInfo for a target thread.
 
bool ReadFileContents (const base::FilePath &path, std::string *contents) override
 Reads the entire contents of a file.
 
ProcessMemoryLinuxMemory () override
 Returns a memory reader for the connected process.
 
bool Threads (std::vector< pid_t > *threads) override
 Determines the thread IDs of the threads in the connected process.
 
ssize_t ReadUpTo (VMAddress address, size_t size, void *buffer) override
 Copies memory from the connected process into a caller-provided buffer in the current process, up to a maximum number of bytes.
 

Detailed Description

Implements a PtraceConnection over a socket.

This class forms the client half of the connection and is typically used when the current process does not have ptrace capabilities on the target process. It should be created with a socket connected to a PtraceBroker.

Member Function Documentation

◆ Attach()

bool crashpad::PtraceClient::Attach ( pid_t tid)
overridevirtual

Adds a new thread to this connection.

Parameters
[in]tidThe thread ID of the thread to attach.
Returns
true on success. false on failure with a message logged.

Implements crashpad::PtraceConnection.

◆ GetProcessID()

pid_t crashpad::PtraceClient::GetProcessID ( )
overridevirtual

Returns the process ID of the connected process.

Implements crashpad::PtraceConnection.

◆ GetThreadInfo()

bool crashpad::PtraceClient::GetThreadInfo ( pid_t tid,
ThreadInfo * info )
overridevirtual

Retrieves a ThreadInfo for a target thread.

Parameters
[in]tidThe thread ID of the target thread.
[out]infoInformation about the thread.
Returns
true on success. false on failure with a message logged.

Implements crashpad::PtraceConnection.

◆ Initialize()

bool crashpad::PtraceClient::Initialize ( int sock,
pid_t pid )

Initializes this object.

This method must be successfully called before any other method in this class.

Parameters
[in]sockA socket connected to a PtraceBroker. Does not take ownership of the socket.
[in]pidThe process ID of the process to form a PtraceConnection with.
Returns
true on success. false on failure with a message logged.

◆ Is64Bit()

bool crashpad::PtraceClient::Is64Bit ( )
overridevirtual

Returns true if connected to a 64-bit process.

Implements crashpad::PtraceConnection.

◆ Memory()

ProcessMemoryLinux * crashpad::PtraceClient::Memory ( )
overridevirtual

Returns a memory reader for the connected process.

The caller does not take ownership of the reader. The reader is valid for the lifetime of the PtraceConnection that created it.

Implements crashpad::PtraceConnection.

◆ ReadFileContents()

bool crashpad::PtraceClient::ReadFileContents ( const base::FilePath & path,
std::string * contents )
overridevirtual

Reads the entire contents of a file.

Parameters
[in]pathThe path of the file to read.
[out]contentsThe file contents, valid if this method returns true.
Returns
true on success. false on failure with a message logged.

Implements crashpad::PtraceConnection.

◆ ReadUpTo()

ssize_t crashpad::PtraceClient::ReadUpTo ( VMAddress address,
size_t size,
void * buffer )
overridevirtual

Copies memory from the connected process into a caller-provided buffer in the current process, up to a maximum number of bytes.

Parameters
[in]addressThe address, in the connected process' address space, of the memory region to copy.
[in]sizeThe maximum size, in bytes, of the memory region to copy. buffer must be at least this size.
[out]bufferThe buffer into which the contents of the other process' memory will be copied.
Returns
the number of bytes copied, 0 if there is no more data to read, or -1 on failure with a message logged.

Implements crashpad::PtraceConnection.

◆ Threads()

bool crashpad::PtraceClient::Threads ( std::vector< pid_t > * threads)
overridevirtual

Determines the thread IDs of the threads in the connected process.

Parameters
[out]threadsThe list of thread IDs.
Returns
true on success, false on failure with a message logged. If this method returns false, threads may contain a partial list of thread IDs.

Implements crashpad::PtraceConnection.


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