Я студент CS, который только что изучил основы c mips
для класса (Patterson & Hennessy + spim
), и я пытаюсь найти решение отладки mips
, которое позволяет выполнять произвольные инструкции во время процесс отладки.
Попытка с GDB (так что вы знаете, почему бы не предлагать это)
Рекомендуемая mips
цепочка инструментов кросс-компиляции qemu
и gdb
, см. mips.com docs и связанные Q / A .
gdb
Команда compile code
не поддерживает mips-linux-gnu-gcc
, поскольку Я могу сказать, см. gdb docs («Перемещение объектного файла») и связанные Q / A . Я получаю ошибки для malloc
, mmap
и недопустимые ошибки памяти (что-то не так с ad-ho c, связывающим действия gdb
) при попытке использовать compile code
с mips-linux-gnu-gcc
, даже после фильтрации жестко закодированных аргументов компиляции, которые mips-linux-gnu-gcc
не распознает.
Актуальный вопрос
lldb
имеет похожую команду под названием expression
, см. lldb docs , и я заинтересован в использовании lldb
в сочетании с qemu
. Команда expression
также опирается на clang
в отличие от gcc
, но кросс-компиляция в clang относительно проста (clang -target mips-linux-gnu
"просто работает"). Единственная проблема заключается в том, что qemu-mips -g
запускает gdbserver
, и я не могу найти опцию для запуска lldb-server
.
Я прочитал lldb docs при удаленной отладке, и есть возможность выбрать remote-gdb-server
в качестве platform
. Я не могу найти много документации о remote-gdb-server
, но название, по-видимому, подразумевает, что lldb
может быть совместимо с gdbserver
.
Вот моя попытка сделать эту работу:
qemu-mips -g 1234 test
lldb test
(lldb) platform select remote-gdb-server
Platform: remote-gdb-server
Connected: no
(lldb) platform connect connect://localhost:1234
Platform: remote-gdb-server
Hostname: (null)
Connected: yes
(lldb) b main
Breakpoint 1: where = test`main + 16 at test.c:4, address = 0x00400530
(lldb) c
error: invalid process
Есть ли способ либо
- использовать
lldb
с gdbserver
, либо - запуск
lldb-server
с qemu-mips
в противоположность на gdbserver
, чтобы я мог выполнять инструкции при отладке mips
кода?
Примечание: я понимаю, что вместо этого я мог бы использовать qemu
эмуляцию системы, чтобы иметь возможность просто запустите lldb-server
на пульте. Я пытался виртуализировать debian mips
, используя это руководство , но сетевой установщик не обнаружит мою сетевую карту. Судя по многочисленным SO Q / A и онлайн-форумам, решить эту проблему сложно. Поэтому сейчас я пытаюсь избежать эмуляции всей системы.