diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-14 14:27:43 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-14 14:27:43 +0200 |
| commit | 94ceccd5acda2fd035eb55235126b944b0915576 (patch) | |
| tree | 8189412a45182b418cc3d0d63996c482e116e8d4 /dev/LibDebugger/src | |
| parent | bdab776c880e4f4868332c451b028684f54ecd5d (diff) | |
dev(kdbg): Working on NeKernel Debugger.
how:
- Load vmkrnl.efi.
- Keep track of IP, Stack, and debugging information related to the
kernel.
- Make use of breakpoints and provide lldb grade experience.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/LibDebugger/src')
| -rw-r--r-- | dev/LibDebugger/src/NeKernelContract.cc | 34 | ||||
| -rw-r--r-- | dev/LibDebugger/src/NeKernelContractCLI.cc | 35 | ||||
| -rw-r--r-- | dev/LibDebugger/src/POSIXMachContractCLI.cc (renamed from dev/LibDebugger/src/POSIXMachContract.cc) | 21 |
3 files changed, 76 insertions, 14 deletions
diff --git a/dev/LibDebugger/src/NeKernelContract.cc b/dev/LibDebugger/src/NeKernelContract.cc new file mode 100644 index 0000000..e653d12 --- /dev/null +++ b/dev/LibDebugger/src/NeKernelContract.cc @@ -0,0 +1,34 @@ +/*** + LibDebugger + (C) 2025 Amlal El Mahrouss + File: NeKernelContract.cc + Purpose: NeKernel Debugger +*/ + +#ifdef LD_NEKERNEL_DEBUGGER + +#include <LibCompiler/Defines.h> +#include <LibDebugger/NeKernelContract.h> +#include <Vendor/Dialogs.h> + +#include <cstdint> +#include <iostream> +#include <string> + +using namespace LibDebugger::NeKernel; + +NeKernelContract::NeKernelContract() = default; + +NeKernelContract::~NeKernelContract() = default; + +bool NeKernelContract::Attach(std::string path, std::string argv, ProcessID& pid) noexcept { return false; } + +bool NeKernelContract::Breakpoint(std::string symbol) noexcept { return false; } + +bool NeKernelContract::Break() noexcept { return false; } + +bool NeKernelContract::Continue() noexcept { return false; } + +bool NeKernelContract::Detach() noexcept { return false; } + +#endif // LD_NEKERNEL_DEBUGGER
\ No newline at end of file diff --git a/dev/LibDebugger/src/NeKernelContractCLI.cc b/dev/LibDebugger/src/NeKernelContractCLI.cc new file mode 100644 index 0000000..1f05ff2 --- /dev/null +++ b/dev/LibDebugger/src/NeKernelContractCLI.cc @@ -0,0 +1,35 @@ +/*** + LibDebugger + (C) 2025 Amlal El Mahrouss + File: NeKernelContract.cc + Purpose: NeKernel Debugger CLI. +*/ + +#ifdef LD_NEKERNEL_DEBUGGER + +#include <LibCompiler/Defines.h> +#include <LibDebugger/NeKernelContract.h> +#include <Vendor/Dialogs.h> + +#include <cstdint> +#include <iostream> +#include <string> + +#include <LibDebugger/CommonCLI.inl> + +using namespace LibDebugger::NeKernel; + +LIBCOMPILER_MODULE(DebuggerNeKernel) { + pfd::notify("Debugger Event", + "Kernel Debugger\n(C) 2025 Amlal El Mahrouss, all rights reserved."); + + if (argc >= 3 && std::string(argv[1]) == "-p" && argv[2] != nullptr) { + kPath = argv[2]; + kStdOut << "[+] Kernel image set to: " << kPath << "\n"; + } + + + return EXIT_SUCCESS; +} + +#endif // LD_NEKERNEL_DEBUGGER
\ No newline at end of file diff --git a/dev/LibDebugger/src/POSIXMachContract.cc b/dev/LibDebugger/src/POSIXMachContractCLI.cc index 2753e9a..90cebc3 100644 --- a/dev/LibDebugger/src/POSIXMachContract.cc +++ b/dev/LibDebugger/src/POSIXMachContractCLI.cc @@ -1,8 +1,11 @@ /*** + LibDebugger (C) 2025 Amlal El Mahrouss - */ + File: POSIXMachContract.cc + Purpose: OS X/Darwin Debugger +*/ -#ifdef __APPLE__ +#ifdef LD_MACH_DEBUGGER #include <LibCompiler/Defines.h> #include <LibDebugger/POSIXMachContract.h> @@ -11,17 +14,7 @@ #include <iostream> #include <string> -static BOOL kKeepRunning = false; -static LibDebugger::POSIX::POSIXMachContract kDebugger; -static LibDebugger::ProcessID kPID = 0L; -static LibDebugger::CAddress kActiveAddress = nullptr; -static std::string kPath = ""; - -#define kBlank "\e[0;30m" -#define kRed "\e[0;31m" -#define kWhite "\e[0;97m" - -#define kStdOut (std::cout << kRed << "dbg: " << kWhite) +#include <LibDebugger/CommonCLI.inl> /// @internal /// @brief Handles CTRL-C signal on debugger. @@ -47,7 +40,7 @@ LIBCOMPILER_MODULE(DebuggerMachPOSIX) { kPath = argv[2]; kDebugger.SetPath(kPath); - kStdOut << "[+] Path set to: " << kPath << "\n"; + kStdOut << "[+] Image set to: " << kPath << "\n"; } ::signal(SIGINT, dbgi_ctrlc_handler); |
