diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-23 20:58:15 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-23 20:58:15 +0100 |
| commit | d8cf1ef181caa49bb44ed521ed063cfed3eca775 (patch) | |
| tree | c6b17ffb5d122ef0d5f00beabde92fe4e0450c32 /dev/LibDebugger | |
| parent | 4b0de97035d2a750c4a2073a1992e2eff68926d0 (diff) | |
feat(dbg): Avoid breakpoint when kPID is not set (kPID = 0)
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/LibDebugger')
| -rw-r--r-- | dev/LibDebugger/POSIX.h | 12 | ||||
| -rw-r--r-- | dev/LibDebugger/src/POSIX.cc | 24 |
2 files changed, 20 insertions, 16 deletions
diff --git a/dev/LibDebugger/POSIX.h b/dev/LibDebugger/POSIX.h index 52af66e..b863f58 100644 --- a/dev/LibDebugger/POSIX.h +++ b/dev/LibDebugger/POSIX.h @@ -34,17 +34,17 @@ namespace LibDebugger::POSIX typedef char* CAddr; #endif - /// \brief Debugger engine interface class in C++ + /// \brief LocalDebuggerPOSIX engine interface class in C++ /// \author Amlal El Mahrouss - class Debugger final + class LocalDebuggerPOSIX final { public: - explicit Debugger() = default; - ~Debugger() = default; + explicit LocalDebuggerPOSIX() = default; + ~LocalDebuggerPOSIX() = default; public: - Debugger& operator=(const Debugger&) = default; - Debugger(const Debugger&) = default; + LocalDebuggerPOSIX& operator=(const LocalDebuggerPOSIX&) = default; + LocalDebuggerPOSIX(const LocalDebuggerPOSIX&) = default; public: bool Attach(pid_t pid) diff --git a/dev/LibDebugger/src/POSIX.cc b/dev/LibDebugger/src/POSIX.cc index 02db4ea..b8c92ae 100644 --- a/dev/LibDebugger/src/POSIX.cc +++ b/dev/LibDebugger/src/POSIX.cc @@ -10,11 +10,17 @@ #ifndef _WIN32 -static bool kKeepRunning = false; -LibDebugger::POSIX::Debugger kDebugger; +static bool kKeepRunning = false; +static LibDebugger::POSIX::LocalDebuggerPOSIX kDebugger; +static pid_t kPID = 0L; static void DebuggerCtrlCHandler(std::int32_t _) { + if (!kPID) + { + return; + } + auto list = kDebugger.Get(); LibDebugger::POSIX::CAddr addr = (LibDebugger::POSIX::CAddr)list[list.size() - 1]; @@ -39,13 +45,11 @@ LIBCOMPILER_MODULE(DebuggerPOSIX) return EXIT_FAILURE; } - pid_t pid = 0L; - if (argc >= 3 && std::string(argv[1]) == "-p" && argv[2] != nullptr) { - pid = std::stoi(argv[2]); - kDebugger.Attach(pid); + kPID = std::stoi(argv[2]); + kDebugger.Attach(kPID); } ::signal(SIGINT, DebuggerCtrlCHandler); @@ -76,16 +80,16 @@ LIBCOMPILER_MODULE(DebuggerPOSIX) std::cout << "[?] Enter a PID to attach on: "; std::getline(std::cin, cmd); - pid = std::stoi(cmd.c_str()); + kPID = std::stoi(cmd.c_str()); - pfd::notify("Debugger Event", "Attach process: " + std::to_string(pid)); + pfd::notify("Debugger Event", "Attach process: " + std::to_string(kPID)); - kDebugger.Attach(pid); + kDebugger.Attach(kPID); } if (cmd == "exit") { - if (pid > 0) + if (kPID > 0) kDebugger.Detach(); break; |
