Именно так, это было бы очень интересно для отладки биос-программ, работающих не под ОС, а непосредственно от момента включения питания до её запуска.
Здесь может помочь имеющаяся в эмуляторе кнопка "Открыть файл с дизассемблерным листингом".
Для получения такого листинга существует могучий дизассемблер IDA, который позволяет в листинге увидеть "родные" имена функций и переменных ("родные" имена можно вводить вручную или автоматически (спец. плагин) - на основе debug-информации).
Но это будет отладка на уровне ассемблера.
Теоретически можно создать отладчик, который будет работать на уровне операторов языка Си. Но он будет сильно привязан к конкретному компилятору в части формата debug-информации исполняемых файлов.
Короче, такой отладчик есть смысл писать, но в рамках какого-либо большого проекта. Например, EFI или LinuxBIOS
Здесь может помочь имеющаяся в эмуляторе кнопка "Открыть файл с дизассемблерным листингом".
Для получения такого листинга существует могучий дизассемблер IDA, который позволяет в листинге увидеть "родные" имена функций и переменных ("родные" имена можно вводить вручную или автоматически (спец. плагин) - на основе debug-информации).
Но это будет отладка на уровне ассемблера.
Теоретически можно создать отладчик, который будет работать на уровне операторов языка Си. Но он будет сильно привязан к конкретному компилятору в части формата debug-информации исполняемых файлов.
Короче, такой отладчик есть смысл писать, но в рамках какого-либо большого проекта. Например, EFI или LinuxBIOS