Когда вы делаете эмуляцию с двигателем Unicorn, вы хотите осмотреть внутреннее состояние на каждом шаге?
udbserver - это плагин для Unicorn, предоставляет сервер отладки, который реализует удаленный последовательный протокол GDB. Вы можете подключить его клиентом GDB и отлаживать как то, что вы делаете в реальной программе.
udbserver может использоваться в качестве ящика с помощью программы Rust, но также предоставляет библиотеку C и привязки для других языков. Вы можете использовать его в большинстве проектов на основе единорога!
udbserver предоставляет только один API:
void udbserver ( void * handle , uint16_t port , uint64_t start_addr ); handle должно быть необработанным ручком экземпляра Unicorn, port - это порт, который должен слушать, start_addr - это адрес, который, когда Unicorn работает на сервере от DEDUG, и ждал, чтобы подключиться. Если start_addr предоставлен 0 , сервер отладки начнется мгновенно.
Вы можете назвать этот API внутри крючка единорога, чтобы вы могли легко интегрировать udbserver в другой проект на основе единорога.
Вы можете использовать udbserver в качестве ящика в Rust .
Вы можете проверить пример того, как его использовать.
И вы можете попробовать это:
$ cargo run --example server Тогда вы можете подключить его с gdb-multiarch .
udbserver предоставляет C-совместимый набор файлов библиотеки, заголовка и PKG-конфиг, которые помогают вам использовать его с другими языками.
Чтобы построить и установить его, вам нужно использовать Cargo-C:
$ cargo install cargo-c
$ mkdir build
$ cargo cinstall --release --prefix=/usr --destdir build
$ sudo cp -dr build/ * / После установки библиотеки udbserver вы можете использовать udbserver на других языках.
Вы можете проверить примеры того, как использовать udbserver на разных языках: