Lorsque vous émulez avec Unicorn Engine, voulez-vous inspecter l'état intérieur à chaque étape?
udbserver est un plugin pour Unicorn, fournit un serveur de débogage qui met en œuvre le protocole de série distant GDB. Vous pouvez le connecter par un client GDB et faire du débogage comme ce que vous faites sur un vrai programme.
udbserver peut être utilisé comme programme Crate by Rust, mais il fournit également une bibliothèque C et des liaisons pour d'autres langues. Vous pouvez l'utiliser dans la plupart des projets basés sur la licorne!
udbserver ne fournit qu'une seule API:
void udbserver ( void * handle , uint16_t port , uint64_t start_addr ); La handle doit être la poignée brute d'une instance de licorne, port est le port à écouter, start_addr est l'adresse que lorsque Unicorn s'exécute sur le serveur de débogage commencera et attendra d'être connecté. Si start_addr est fourni avec 0 , le serveur de débogage commencera instantanément.
Vous pouvez appeler cette API à l'intérieur d'un crochet Unicorn, afin que vous puissiez intégrer facilement udbserver dans un autre projet basé sur Unicorn.
Vous pouvez utiliser udbserver comme caisse en Rust .
Vous pouvez vérifier l'exemple sur la façon de l'utiliser.
Et vous pouvez l'essayer par:
$ cargo run --example server Ensuite, vous pouvez le connecter avec gdb-multiarch .
udbserver fournit un ensemble C-compatible de fichiers de bibliothèque, d'en-tête et PKG-Config, qui vous aident à l'utiliser avec d'autres langues.
Pour construire et l'installer, vous devez utiliser le cargo-c:
$ cargo install cargo-c
$ mkdir build
$ cargo cinstall --release --prefix=/usr --destdir build
$ sudo cp -dr build/ * / Après avoir installé la bibliothèque udbserver , vous pouvez utiliser udbserver dans d'autres langues.
Vous pouvez vérifier les exemples sur la façon d'utiliser udbserver par différentes langues: