I have the following code, where I am trying to implement a function that prints string using the BIOS functions:
int printString(char* string)
{
int i = 0;
Minimal QEMU example
qemu-system-i386 -hda main.img -S -s &
gdb -ex 'target remote localhost:1234' \
-ex 'set architecture i8086' \
-ex 'break *0x7c00' \
-ex 'continue'
where main.img is a boot sector.
break *0x7c00: the first instruction will not be your boot sector, but rather 0x0000fff0 which does the BIOS setup, see also. So we use this to start from where the boot sector gets loaded to.set architecture i8086: for regular ELF executables, GDB can decide architecture from the headers. But for raw boot sectors, there is no such metadata, so we have to tell it.See also:
int: How to step over interrupt calls when debugging a bootloader/bios with gdb and QEMU?