Hm, leider scheint es immer noch nicht so ganz zu funktionieren.
Ich habe mich nach einer GDB GUI umgesehen die unter Windows nutzbar ist.
Dabei bin ich auf die Affinic Debugger GUI gestoßen. (Wer etwas Besseres kennt - Vorschläge willkommen...)
Der Debugger startet ganz prima.
Durch den Assemblercode steppen ist auch kein Problem.
Im Stacktrace werden sogar die Methodennamen angezeigt.
Leider wird aber nicht der Quellcode angezeigt und wenn ich einen "Single-Line-Step machen" will kommt bloß eine Meldung.
GDB Ausgabe:
(gdb) cd ?:\*\*\*\System001
Working directory ?:\*\*\*\System001.
(gdb) target remote 127.0.0.1:1234
Remote debugging using 127.0.0.1:1234
0x000090bd in ?? ()
(gdb) symbol-file kernel.sym
Reading symbols from ?:\*\*\*\System001\kernel.sym...(no debugging symbols found)...done.
(gdb) continue
Continuing.
Program received signal SIGINT, Interrupt.
0x001103bc in Mmv_Init ()
(gdb) interrupt
(gdb) next
Single stepping until exit from function Mmv_Init,
which has no line number information
GDB wird so initialisiert:
cd ?:\*\*\*\System001
target remote 127.0.0.1:1234
symbol-file kernel.sym
Kompilieren tu ich mit der Stapelverarbeitungsdatei im Anhang.
Auf das vermutlich Relevante beschränkt in Kurzform:
SET C_COMPILE=i586-elf-gcc -m32 -ffreestanding -Wall -nostdinc -std=gnu99 -I stdlib -O1 -fno-builtin -g
SET ASM_COMPILE=nasm -f elf32 -g
%ASM_COMPILE% -o obj\init_S.o init.S
%C_COMPILE% -o obj\init_c.o -c init.c
%C_COMPILE% -o obj\lowlevelbeep_c.o -c kernel\lowlevelbeep.c
%C_COMPILE% -o obj\lowlevelconsole_c.o -c kernel\lowlevelconsole.c
%C_COMPILE% -o obj\time_c.o -c kernel\lowleveltime.c
%C_COMPILE% -o obj\cpuid_c.o -c kernel\cpuid.c
%C_COMPILE% -o obj\gdt_c.o -c kernel\gdt.c
%C_COMPILE% -o obj\pic_c.o -c kernel\pic.c
%ASM_COMPILE% -o obj\intr_S.o kernel\intr.S
%C_COMPILE% -o obj\intr_c.o -c kernel\intr.c
%C_COMPILE% -o obj\cpustate_c.o -c kernel\cpustate.c
%C_COMPILE% -o obj\thread_c.o -c kernel\thread.c
%C_COMPILE% -o obj\process_c.o -c kernel\process.c
%C_COMPILE% -o obj\tss_c.o -c kernel\tss.c
%C_COMPILE% -o obj\api_intr_c.o -c kernel\api_intr.c
%C_COMPILE% -o obj\mm_c.o -c kernel\mm.c
%C_COMPILE% -o obj\mmp_c.o -c kernel\mmp.c
%C_COMPILE% -o obj\mmv_c.o -c kernel\mmv.c
@REM %C_COMPILE% %C_COMPILE% -E -o stdlib_math_c.i -c stdlib\math.c
@REM %C_COMPILE% -c -S -o stdlib_math_c.S -c stdlib\math.c
%C_COMPILE% -o obj\stdlib_math_c.o -c stdlib\math.c
%C_COMPILE% -o obj\stdlib_string_c.o -c stdlib\string.c
%C_COMPILE% -o obj\stdlib_stdlib_c.o -c stdlib\stdlib.c
%C_COMPILE% -o obj\api_api_c.o -c kernel\api\api.c
%C_COMPILE% -o obj\api_console_c.o -c kernel\api\console.c
i586-elf-ld -L "%GCC_PATH%\lib" -L "%GCC_PATH%\lib\gcc\i586-elf\%GCC_VERSION%" -T linkconf.ld -o obj\kernel.bin obj\*.o "%LIBGCC_FILE_NAME%" -Ttext=0x100000
i586-elf-objcopy --only-keep-debug "obj\kernel.bin" "kernel.sym"
i586-elf-objcopy --strip-debug "obj\kernel.bin"
copy obj\kernel.bin cd\kernel.bin
mkisofs -R -J -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o cdrom.iso cd/
Ich hoffe, ihr habt vielleicht eine Vermutung was die Ursache sein könnte.