عندما تقوم بمضاهاة مع محرك يونيكورن ، هل تريد فحص الحالة الداخلية خلال كل خطوة؟
udbserver هو مكون إضافي لـ Unicorn ، ويوفر خادم تصحيح ينفذ بروتوكول التسلسلي عن بُعد GDB. يمكنك توصيله بواسطة عميل GDB والقيام بتصحيح الأخطاء كما تفعله في البرنامج الحقيقي.
يمكن استخدام udbserver كصندوق بواسطة برنامج Rust ، ولكنه يوفر أيضًا مكتبة C وروابط للغات الأخرى. يمكنك استخدامه داخل معظم المشاريع القائمة على يونيكورن!
يوفر udbserver فقط واجهة برمجة تطبيقات واحدة:
void udbserver ( void * handle , uint16_t port , uint64_t start_addr ); يجب أن يكون handle هو المقبض الخام لمثيل يونيكورن ، port هو المنفذ المراد استمعجه ، start_addr هو العنوان الذي سيبدأ فيه Unicorn في خادم التصحيح وينتظر التوصيل. إذا تم تزويد start_addr بـ 0 ، فسيبدأ خادم التصحيح على الفور.
يمكنك استدعاء واجهة برمجة التطبيقات هذه داخل خطاف يونيكورن ، بحيث يمكنك دمج udbserver داخل مشروع آخر يعتمد على Unicorn بسهولة.
يمكنك استخدام udbserver كقفص في Rust .
يمكنك التحقق من المثال حول كيفية استخدامه.
ويمكنك تجربتها بحلول:
$ cargo run --example server ثم يمكنك توصيله بـ gdb-multiarch .
يوفر udbserver مجموعة متوافقة مع ملفات المكتبات والأسفل و PKG-Config ، والتي تساعدك على استخدامها مع لغات أخرى.
لبناء وتثبيته ، تحتاج إلى استخدام Cargo-C:
$ cargo install cargo-c
$ mkdir build
$ cargo cinstall --release --prefix=/usr --destdir build
$ sudo cp -dr build/ * / بعد تثبيت مكتبة udbserver ، يمكنك استخدام udbserver بلغات أخرى.
يمكنك التحقق من الأمثلة حول كيفية استخدام udbserver بلغات مختلفة: