mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 00:17:46 +00:00
LibDebug: Clean up DebugSession construction a little bit
No need to wrap MappedFile in a NonnullOwnPtr. Also make the session constructor private and use adopt_own().
This commit is contained in:
parent
03fcd02dfd
commit
aec54af04f
2 changed files with 13 additions and 13 deletions
|
@ -30,18 +30,18 @@
|
||||||
|
|
||||||
namespace Debug {
|
namespace Debug {
|
||||||
|
|
||||||
DebugSession::DebugSession(int pid)
|
DebugSession::DebugSession(pid_t pid)
|
||||||
: m_debuggee_pid(pid)
|
: m_debuggee_pid(pid)
|
||||||
, m_executable(initialize_executable_mapped_file(pid))
|
, m_executable(map_executable_for_process(pid))
|
||||||
, m_elf(ELF::Loader::create(reinterpret_cast<const u8*>(m_executable->data()), m_executable->size()))
|
, m_elf(ELF::Loader::create(reinterpret_cast<const u8*>(m_executable.data()), m_executable.size()))
|
||||||
, m_debug_info(m_elf)
|
, m_debug_info(m_elf)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NonnullOwnPtr<const MappedFile> DebugSession::initialize_executable_mapped_file(int pid)
|
MappedFile DebugSession::map_executable_for_process(pid_t pid)
|
||||||
{
|
{
|
||||||
auto executable = adopt_own(*new MappedFile(String::format("/proc/%d/exe", pid)));
|
MappedFile executable(String::formatted("/proc/{}/exe", pid));
|
||||||
ASSERT(executable->is_valid());
|
ASSERT(executable.is_valid());
|
||||||
return executable;
|
return executable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ DebugSession::~DebugSession()
|
||||||
|
|
||||||
OwnPtr<DebugSession> DebugSession::exec_and_attach(const String& command)
|
OwnPtr<DebugSession> DebugSession::exec_and_attach(const String& command)
|
||||||
{
|
{
|
||||||
int pid = fork();
|
auto pid = fork();
|
||||||
|
|
||||||
if (pid < 0) {
|
if (pid < 0) {
|
||||||
perror("fork");
|
perror("fork");
|
||||||
|
@ -108,7 +108,7 @@ OwnPtr<DebugSession> DebugSession::exec_and_attach(const String& command)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return make<DebugSession>(pid);
|
return adopt_own(*new DebugSession(pid));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DebugSession::poke(u32* address, u32 data)
|
bool DebugSession::poke(u32* address, u32 data)
|
||||||
|
|
|
@ -48,8 +48,6 @@ class DebugSession {
|
||||||
public:
|
public:
|
||||||
static OwnPtr<DebugSession> exec_and_attach(const String& command);
|
static OwnPtr<DebugSession> exec_and_attach(const String& command);
|
||||||
|
|
||||||
// Has to be public for OwnPtr::make
|
|
||||||
DebugSession(int pid);
|
|
||||||
~DebugSession();
|
~DebugSession();
|
||||||
|
|
||||||
int pid() const { return m_debuggee_pid; }
|
int pid() const { return m_debuggee_pid; }
|
||||||
|
@ -103,7 +101,7 @@ public:
|
||||||
|
|
||||||
const ELF::Loader& elf() const { return *m_elf; }
|
const ELF::Loader& elf() const { return *m_elf; }
|
||||||
NonnullRefPtr<const ELF::Loader> elf_ref() const { return m_elf; }
|
NonnullRefPtr<const ELF::Loader> elf_ref() const { return m_elf; }
|
||||||
const MappedFile& executable() const { return *m_executable; }
|
const MappedFile& executable() const { return m_executable; }
|
||||||
const DebugInfo& debug_info() const { return m_debug_info; }
|
const DebugInfo& debug_info() const { return m_debug_info; }
|
||||||
|
|
||||||
enum DebugDecision {
|
enum DebugDecision {
|
||||||
|
@ -121,15 +119,17 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
explicit DebugSession(pid_t);
|
||||||
|
|
||||||
// x86 breakpoint instruction "int3"
|
// x86 breakpoint instruction "int3"
|
||||||
static constexpr u8 BREAKPOINT_INSTRUCTION = 0xcc;
|
static constexpr u8 BREAKPOINT_INSTRUCTION = 0xcc;
|
||||||
|
|
||||||
static NonnullOwnPtr<const MappedFile> initialize_executable_mapped_file(int pid);
|
static MappedFile map_executable_for_process(pid_t);
|
||||||
|
|
||||||
int m_debuggee_pid { -1 };
|
int m_debuggee_pid { -1 };
|
||||||
bool m_is_debuggee_dead { false };
|
bool m_is_debuggee_dead { false };
|
||||||
|
|
||||||
NonnullOwnPtr<const MappedFile> m_executable;
|
MappedFile m_executable;
|
||||||
NonnullRefPtr<const ELF::Loader> m_elf;
|
NonnullRefPtr<const ELF::Loader> m_elf;
|
||||||
DebugInfo m_debug_info;
|
DebugInfo m_debug_info;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue