تصحيح الأخطاء C# التي تم إطلاقها بواسطة وقت تشغيل Mono المدمج؟

StackOverflow https://stackoverflow.com/questions/3649503

سؤال

أنا أتحدث عن محرك لعبة صغير باستخدام C# لبرمجة الألعاب. لذلك ، لدي تطبيق C ++ تضمين وقت تشغيل Mono (أسميه "Launcher"). ولدي مجموعة مكتوبة في C# وهي مكتبة فئة محرك اللعبة. يطلق المشغل التجميع كما هو مقترح في تضمين أحادي.

والآن الجزء المثير للاهتمام! ينفذ المشغل في وظائف C ++ Miscelain التي تتعرض لوقت التشغيل الأحادي كطرق داخلية لفصول محرك اللعبة. هذا هو السبب في أن مجموعة محرك اللعبة الخاصة بي ليست بدون قاذفة تنفذ جزءًا كبيرًا من المحرك في C ++.

السؤال: كيف من المفترض أن أقوم بتصحيح تجميع C# الخاص بي؟ وما هو الأهم من ذلك ، كيف من المفترض أن أخلى عن لعبة سأكتبها في C# ؟؟؟

كما تفهم ، لا يمكنني تصحيح التجميع باستخدام MonoDevelop Debugger لأنه لن يتلقى تطبيقات C ++ الداخلية لبعض أساليبها.

ما أحتاجه هو تشغيل المشغل. ثم سيتم تشغيل القاذفة C# Assembly باستخدام وقت تشغيل Mono المدمج. ثم أحتاج إلى شيء للاتصال بالتجميع الذي تم إطلاقه للسماح بتصحيح الأخطاء.

أو أي طريقة أخرى. شكرًا لك!

هل كانت مفيدة؟

المحلول

أوصي باستخدام مصحح الأخطاء الناعمة أحادية. تم تضمينه في وقت التشغيل Mono منذ Mono 2.6 ، وهو أكثر موثوقية من مصحح الأخطاء الصلبة القديمة ، وأيضًا أكثر محمولة.

يمكن بدء تشغيل مصحح الأخطاء الناعمة أحادية عن طريق تمرير الخيارات باستخدام --debugger-agent حجة سطر الأوامر إلى وقت التشغيل أحادي. يمكن القيام بذلك من مضيف تضمين عن طريق بناء مجموعة مزيفة من وسيطات سطر الأوامر ونقلها إلى mono_jit_parse_options. على سبيل المثال ، يستخدم المكون الإضافي لمتصفح Moonlight Browser قيم وكيل Debugger من متغير Moon_Soft_Debug Environment إذا تم تعيينه.

عادة ما تكون خيارات تصحيح الأخطاء مثل

--debugger-agent="transport=dt_socket,address=$ADDRESS:$PORT"

مما سيؤدي إلى محاولة التطبيق للاتصال بتصحيح الأخطاء الاستماع على العنوان المحدد ، وتوقف مؤقتًا حتى ينشئ اتصالًا. لاحظ أن الاتصال تم تأسيسه عبر TCP/IP ، مما يعني أن تصحيح الأخطاء عن بُعد سهل للغاية ، وحتى على الجهاز المحلي ، ستستخدم المضيف المحلي. يتم توثيق خيارات إضافية على صفحة Mono's Man.

القطعة الأخرى التي تحتاجها هي DEPUGGER GUI/Controller ، للاستماع إلى الاتصال من تطبيقك ، والتعامل مع الخطوة/التصور ، وما إلى ذلك. أود أن أقترح استخدام Monodevelop. هناك مكتبة لبروتوكول سلك الأخطاء المسمى mono.debugger.soft.dll ، لكنها منخفضة المستوى إلى حد ما ، وعلى الرغم من أن أدوات Mono لـ Visual Studio تدعم التواصل مع الأخطاء الناعمة ، إلا أنها لا يمكن توسيعها بعد بطريقة تسمح تصحيح الأحادي تضمين المضيفين.

يتطلب استخدام Monodevelop لقبول اتصالات التصحيح من تضمين المضيفين حاليًا إنشاء إضافة ، ولكن هذا واضح إلى حد ما. ألق نظرة على ضوء القمر مصحوب أخطاء addin على سبيل المثال. لحالات الاستخدام البسيطة ، أود أن أقترح ألا تحدد نوعًا جديدًا من المشروع ولكن فقط قم بإنشاء معالج تصحيح يتولى مشاريع DotNetExecutionCommand الحالية ، حتى تتمكن من ذلك تشغيل> تشغيل مع ...-> تصحيح الأخطاء المخصصة الخاصة بك.

ال قائمة التطوير أحادي القائمة البريدية مورد جيد إذا كان لديك المزيد من الأسئلة.

نصائح أخرى

الاستفادة من تصحيح أخطاء الشبكة.

يمكنك استخدام تصحيح الأخطاء الناعمة لتصحيح الأجزاء أحادية ، ثم استخدامها تصحيح الأخطاء عن بُعد لأجزاء C ++.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top