summaryrefslogtreecommitdiffhomepage
path: root/dev/DebuggerKit/src
diff options
context:
space:
mode:
Diffstat (limited to 'dev/DebuggerKit/src')
-rw-r--r--dev/DebuggerKit/src/NeKernelContract.cc90
-rw-r--r--dev/DebuggerKit/src/NeKernelContractCLI.cc100
-rw-r--r--dev/DebuggerKit/src/POSIXMachContractCLI.cc94
3 files changed, 0 insertions, 284 deletions
diff --git a/dev/DebuggerKit/src/NeKernelContract.cc b/dev/DebuggerKit/src/NeKernelContract.cc
deleted file mode 100644
index 38f327d..0000000
--- a/dev/DebuggerKit/src/NeKernelContract.cc
+++ /dev/null
@@ -1,90 +0,0 @@
-/* ========================================
-
- Copyright (C) 2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license.
-
-======================================== */
-
-#ifdef DK_NEKERNEL_DEBUGGER
-
-/// @author Amlal El Mahrouss
-/// @brief Kernel Debugger Protocol
-
-#include <CompilerKit/Defines.h>
-#include <DebuggerKit/NeKernelContract.h>
-#include <DebuggerKit/Platform.h>
-#include <ThirdParty/Dialogs.h>
-
-using namespace DebuggerKit::NeKernel;
-using namespace DebuggerKit::NeKernel::Detail;
-
-NeKernelContract::NeKernelContract() = default;
-
-NeKernelContract::~NeKernelContract() = default;
-
-Bool NeKernelContract::Attach(CompilerKit::STLString path, CompilerKit::STLString argv,
- ProcessID& pid) noexcept {
- if (path.empty() || argv.empty()) return NO;
-
- m_socket = ::socket(AF_INET, SOCK_STREAM, 0);
-
- if (m_socket == -1) return NO;
-
- struct sockaddr_in server_addr;
-
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(kDebugPort);
-
- if (::inet_pton(AF_INET, argv.c_str(), &server_addr.sin_addr) <= 0) return NO;
-
- auto ret = (::connect(m_socket, (struct sockaddr*) &server_addr, sizeof(server_addr)) == -1);
-
- if (ret) return NO;
-
- CompilerKit::STLString pkt = Detail::kDebugMagic;
- pkt += ";\r";
-
- ret = ::send(m_socket, pkt.data(), pkt.size(), 0) > 0;
- return ret;
-}
-
-Bool NeKernelContract::BreakAt(CompilerKit::STLString symbol) noexcept {
- CompilerKit::STLString pkt = Detail::kDebugMagic;
- pkt += ";SYM=";
- pkt += symbol;
- pkt += ";\r";
-
- if (pkt.size() > kDebugCmdLen) return NO;
-
- auto ret = ::send(m_socket, pkt.data(), pkt.size(), 0) > 0;
- return ret;
-}
-
-Bool NeKernelContract::Break() noexcept {
- CompilerKit::STLString pkt = Detail::kDebugMagic;
- pkt += ";BRK=1;\r";
-
- auto ret = ::send(m_socket, pkt.data(), pkt.size(), 0) > 0;
- return ret;
-}
-
-Bool NeKernelContract::Continue() noexcept {
- CompilerKit::STLString pkt = Detail::kDebugMagic;
- pkt += ";CONT=1;\r";
-
- auto ret = ::send(m_socket, pkt.data(), pkt.size(), 0) > 0;
- return ret;
- return NO;
-}
-
-Bool NeKernelContract::Detach() noexcept {
- CompilerKit::STLString pkt = Detail::kDebugMagic;
- pkt += ";DTCH=1;\r";
-
- auto ret = ::send(m_socket, pkt.data(), pkt.size(), 0) > 0;
-
- if (ret) ::close(m_socket);
-
- return ret;
-}
-
-#endif // DK_NEKERNEL_DEBUGGER
diff --git a/dev/DebuggerKit/src/NeKernelContractCLI.cc b/dev/DebuggerKit/src/NeKernelContractCLI.cc
deleted file mode 100644
index fc13a53..0000000
--- a/dev/DebuggerKit/src/NeKernelContractCLI.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-/* ========================================
-
- Copyright (C) 2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license.
-
-======================================== */
-
-#ifdef DK_NEKERNEL_DEBUGGER
-
-#include <CompilerKit/Defines.h>
-#include <DebuggerKit/NeKernelContract.h>
-#include <ThirdParty/Dialogs.h>
-#include <string>
-
-#include <DebuggerKit/CommonCLI.inl>
-
-using namespace DebuggerKit::NeKernel;
-
-static void dbgi_ctrlc_handler(std::int32_t _) {
- if (!kPID || kPath.empty()) {
- return;
- }
-
- kKernelDebugger.Break();
-
- pfd::notify("Debugger Event", "Breakpoint hit!");
-
- kKeepRunning = false;
-}
-
-NECTI_MODULE(DebuggerNeKernel) {
- pfd::notify("Debugger Event",
- "NeCTI Debugger\n(C) 2025 Amlal El Mahrouss and NeKernel.org contributors, all "
- "rights reserved.");
-
- if (argc >= 5 && std::string(argv[1]) == "-k" && argv[2] != nullptr &&
- std::string(argv[3]) == "-ip" && argv[4] != nullptr) {
- kPath = argv[2];
- kPath += ":";
- kPath += argv[4];
-
- kStdOut << "[+] KIP (Kernel:IP) set to: " << kPath << "\n";
-
- CompilerKit::install_signal(SIGINT, dbgi_ctrlc_handler);
-
- kKernelDebugger.Attach(kPath, argv[4], kPID);
-
- while (YES) {
- if (kKeepRunning) {
- continue;
- }
-
- std::string cmd;
- if (!std::getline(std::cin, cmd)) break;
-
- if (cmd == "c" || cmd == "cont" || cmd == "continue") {
- if (kKernelDebugger.Continue()) {
- kKeepRunning = true;
-
- kStdOut << "[+] Continuing...\n";
-
- pfd::notify("Debugger Event", "Continuing...");
- }
- }
-
- if (cmd == "d" || cmd == "detach") kKernelDebugger.Detach();
-
- if (cmd == "start") {
- kStdOut << "[?] Enter a argument to use: ";
- std::getline(std::cin, cmd);
-
- kKernelDebugger.Attach(kPath, cmd, kPID);
- }
-
- if (cmd == "exit") {
- if (kPID > 0) kKernelDebugger.Detach();
-
- break;
- }
-
- if (cmd == "break" || cmd == "b") {
- kStdOut << "[?] Enter a symbol to break on: ";
-
- std::getline(std::cin, cmd);
-
- if (kKernelDebugger.BreakAt(cmd)) {
- pfd::notify("Debugger Event", "Add BreakAt at: " + cmd);
- }
- }
- }
-
- return EXIT_SUCCESS;
- }
-
- kStdOut << "usage: " << argv[0] << " -k <kernel_path> -ip <ip4>\n";
- kStdOut << "example: " << argv[0] << " -k /path/to/ne_kernel -ip 127.0.0.1\n";
-
- return EXIT_FAILURE;
-}
-
-#endif // DK_NEKERNEL_DEBUGGER
diff --git a/dev/DebuggerKit/src/POSIXMachContractCLI.cc b/dev/DebuggerKit/src/POSIXMachContractCLI.cc
deleted file mode 100644
index 77fe844..0000000
--- a/dev/DebuggerKit/src/POSIXMachContractCLI.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-/* ========================================
-
- Copyright (C) 2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license.
-
-======================================== */
-
-#ifdef DK_MACH_DEBUGGER
-
-#include <CompilerKit/Defines.h>
-#include <DebuggerKit/POSIXMachContract.h>
-#include <ThirdParty/Dialogs.h>
-#include <DebuggerKit/CommonCLI.inl>
-
-/// @internal
-/// @brief Handles CTRL-C signal on debugger.
-static void dbgi_ctrlc_handler(std::int32_t _) {
- if (!kPID) {
- return;
- }
-
- kUserDebugger.Break();
-
- pfd::notify("Debugger Event", "Breakpoint hit!");
-
- kKeepRunning = false;
-}
-
-NECTI_MODULE(DebuggerMachPOSIX) {
- pfd::notify(
- "Debugger Event",
- "Userland Debugger\n(C) 2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license.");
-
- if (argc >= 3 && std::string(argv[1]) == "-p" && argv[2] != nullptr) {
- kPath = argv[2];
- kUserDebugger.SetPath(kPath);
-
- kStdOut << "[+] Image set to: " << kPath << "\n";
- } else {
- kStdOut << "usage: " << argv[0] << " -p <path>\n";
- kStdOut << "example: " << argv[0] << " -p /path/to/program\n";
-
- return EXIT_FAILURE;
- }
-
- CompilerKit::install_signal(SIGINT, dbgi_ctrlc_handler);
-
- while (YES) {
- if (kKeepRunning) {
- continue;
- }
-
- std::string cmd;
- if (!std::getline(std::cin, cmd)) break;
-
- if (cmd == "c" || cmd == "cont" || cmd == "continue") {
- if (kUserDebugger.Continue()) {
- kKeepRunning = true;
-
- kStdOut << "[+] Continuing...\n";
-
- pfd::notify("Debugger Event", "Continuing...");
- }
- }
-
- if (cmd == "d" || cmd == "detach") kUserDebugger.Detach();
-
- if (cmd == "start") {
- kStdOut << "[?] Enter a argument to use: ";
- std::getline(std::cin, cmd);
-
- kUserDebugger.Attach(kPath, cmd, kPID);
- }
-
- if (cmd == "exit") {
- if (kPID > 0) kUserDebugger.Detach();
-
- break;
- }
-
- if (cmd == "break" || cmd == "b") {
- kStdOut << "[?] Enter a symbol to break on: ";
-
- std::getline(std::cin, cmd);
-
- if (kUserDebugger.BreakAt(cmd)) {
- pfd::notify("Debugger Event", "Add BreakAt at: " + cmd);
- }
- }
- }
-
- return EXIT_SUCCESS;
-}
-
-#endif \ No newline at end of file