diff --git a/mk/podman.mk b/mk/podman.mk index abd2b1e1..2fb068dc 100644 --- a/mk/podman.mk +++ b/mk/podman.mk @@ -70,3 +70,17 @@ ifeq ($(PODMAN_BUILD),1) else @echo PODMAN_BUILD=$(PODMAN_BUILD), container not required. endif + +KERNEL_PATH := cookbook/recipes/core/kernel +KERNEL_PATH_SOURCE := $(ROOT)/$(KERNEL_PATH)/source +KERNEL_PATH_TARGET := $(ROOT)/$(KERNEL_PATH)/target/$(TARGET) + +kernel_debugger: + @echo "Building and running gdbgui container..." + podman build -t redox-kernel-debug - < $(ROOT)/podman/redox-gdb-containerfile + podman run --rm -p 5000:5000 -it --name redox-gdb \ + -v "$(KERNEL_PATH_TARGET)/build/kernel.sym:/kernel.sym" \ + -v "$(KERNEL_PATH_SOURCE)/src:/src" \ + redox-kernel-debug --gdb-cmd "gdb -ex 'set confirm off' \ + -ex 'add-symbol-file /kernel.sym' \ + -ex 'target remote host.containers.internal:1234'" diff --git a/podman/redox-gdb-containerfile b/podman/redox-gdb-containerfile new file mode 100644 index 00000000..90efb0a7 --- /dev/null +++ b/podman/redox-gdb-containerfile @@ -0,0 +1,15 @@ +FROM debian:stable-backports + +RUN apt-get update \ + && apt-get install -y --no-install-recommends -t stable-backports \ + python3 \ + python3-pip \ + gdb \ + curl \ + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install gdbgui --break-system-packages + +EXPOSE 5000 + +ENTRYPOINT [ "gdbgui", "--remote", "--port", "5000" ]