Я знаком с DEBUG.COM
от DOS. Я только что получил необходимость использовать gdb
, но я застрял. Я уверен, что gdb
является гораздо более универсальным и мощным, но мне просто нужно быстро выполнить кусок кода (не генерируемый каким-либо конкретным языком) и с хорошей видимостью регистров и выбранных мест памяти. Каковы gdb
эквивалент DEBUG-х:руководство для gdb для пользователя DEBUG
U - unassemble (from select memory location)
D - dump
R - shows (selected) registers
T - executes instruction at current IP
P - step over
gdb
, кажется, требует run
в качестве первого шага, прежде чем я могу даже проверить регистры. Но я хотел бы посмотреть, что такое первая инструкция, прежде чем я захочу запустить. Я не могу поставить точку прерывания в первую инструкцию, если я не знаю, где она находится. Для меня это проблема с курицей и яйцом. Я должен упустить что-то основное.
Теперь я отлаживаю двоичный код C. 'si' будет упрямо выполнять каждый оператор источника C, а не текущую машинную команду. Как переключиться на выполнение машинной команды? –
'si' делает только один шаг на уровне инструкции; это просто, что gdb печатает текущую строку источника с каждым шагом. Я не думаю, что это может быть отключено, но вы можете сделать так же, как и инструкцию, с помощью 'display/i $ pc'. –