summaryrefslogtreecommitdiffhomepage
path: root/dev/LibDebugger/src/POSIXContract.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dev/LibDebugger/src/POSIXContract.cc')
-rw-r--r--dev/LibDebugger/src/POSIXContract.cc128
1 files changed, 0 insertions, 128 deletions
diff --git a/dev/LibDebugger/src/POSIXContract.cc b/dev/LibDebugger/src/POSIXContract.cc
deleted file mode 100644
index 3caeabf..0000000
--- a/dev/LibDebugger/src/POSIXContract.cc
+++ /dev/null
@@ -1,128 +0,0 @@
-/***
- (C) 2025 Amlal El Mahrouss
- */
-
-#include <LibCompiler/Defines.h>
-#include <Vendor/Dialogs.h>
-#include <LibDebugger/POSIXContract.h>
-#include <cstdint>
-#include <string>
-
-#ifndef _WIN32
-
-static bool kKeepRunning = false;
-static LibDebugger::POSIX::POSIXDebuggerContract kDebugger;
-static pid_t kPID = 0L;
-
-/// @internal
-/// @brief Handles CTRL-C signal on debugger.
-static void dbgl_ctrlc_handler(std::int32_t _)
-{
- if (!kPID)
- {
- return;
- }
-
- auto list = kDebugger.Get();
-
- LibDebugger::CAddress addr = (LibDebugger::CAddress)list[list.size() - 1];
-
- if (!addr)
- {
- pfd::notify("Debugger Event", "Invalid breakpoint at: " + std::to_string(list[list.size() - 1]));
- return;
- }
-
- kDebugger.Break(addr);
-
- pfd::notify("Debugger Event", "Breakpoint at: " + std::to_string(list[list.size() - 1]));
-
- kKeepRunning = false;
-}
-
-LIBCOMPILER_MODULE(DebuggerPOSIX)
-{
- pfd::notify("Debugger Event", "NeKernel Debugger\n(C) 2025 Amlal El Mahrouss, all rights reserved.");
-
- if (argc >= 3 && std::string(argv[1]) == "-p" &&
- argv[2] != nullptr)
- {
- kPID = std::stoi(argv[2]);
- kDebugger.Attach(kPID);
- }
-
- ::signal(SIGINT, dbgl_ctrlc_handler);
-
- while (YES)
- {
- if (kKeepRunning)
- {
- continue;
- }
-
- std::string cmd;
- std::getline(std::cin, cmd);
-
- if (cmd == "c" ||
- cmd == "cont")
- {
- kDebugger.Continue();
- kKeepRunning = true;
-
- std::cout << "[+] Continuing...\n";
- pfd::notify("Debugger Event", "Continuing...");
- }
-
- if (cmd == "d" ||
- cmd == "detach")
- kDebugger.Detach();
-
- if (cmd == "attach")
- {
- std::cout << "[?] Enter a PID to attach on: ";
-
- std::getline(std::cin, cmd);
- kPID = std::stoi(cmd.c_str());
-
- pfd::notify("Debugger Event", "Attach process: " + std::to_string(kPID));
-
- kDebugger.Attach(kPID);
- }
-
- if (cmd == "exit")
- {
- if (kPID > 0)
- kDebugger.Detach();
-
- break;
- }
-
- if (cmd == "break" ||
- cmd == "b")
- {
- std::cout << "[?] Enter an address/symbol to add a break on: ";
-
- std::getline(std::cin, cmd);
-
- auto addr = std::stoul(cmd.c_str(), nullptr, 16);
-
- try
- {
- pfd::notify("Debugger Event", "Add Breakpoint at: " + std::to_string(addr));
- }
- catch (...)
- {
- pfd::notify("Debugger Event", "Add Breakpoint at: " + cmd);
- }
-
- LibDebugger::CAddress breakpoint_addr = reinterpret_cast<LibDebugger::CAddress>(addr);
-
- if (breakpoint_addr)
- kDebugger.Break(breakpoint_addr);
- }
- }
-
- return EXIT_SUCCESS;
-}
-
-#endif \ No newline at end of file