StatusRivet
سيرج العمل

إعداد مصحح الأخطاء عن بُعد في Windows بين جهازين مختبر

03
إعداد المختبر

جهّز جهازين مختبر

جلسة تصحيح الأخطاء عن بُعد في Windows تربط مصحح الأخطاء في جهاز واحد ببرنامج في جهاز آخر عبر الشبكة، وهي مخصصة لأجهزتك المختبرية فقط. الرمز (Symbols) يأتي أولاً. سمّ أحد الجهازين المضيف (Host) والآخر الهدف (Target). ابنِ البرنامج مع رموز التصحيح واحتفظ بملف PDB المطابق لهذا البناء بالضبط، لأن ملف PDB غير المطابق يعطي أسماء دوال خاطئة وعرض السلسلة يظهر عناوين فقط. ثبّت StatusRivet على المضيف، حيث تعمل، واحتفظ بالهدف مخصصاً للبرنامج قيد الاختبار فقط. دوّن أي إعداد تغير على أي من الجهازين حتى تتمكن من استعادته لاحقاً. أعد إنتاج العطل بأصغر مدخل يمكنك العثور عليه، لأن الحالة القصيرة تنتج سلسلة قصيرة وفرق أسهل. تأكد من أن المضيف والهدف يمكنهما الوصول لبعضهما قبل أن تطلب من الوكيل القيام بأي شيء، لأن فشل الاتصال يبدو كفشل في مصحح الأخطاء.

01

افتح مجلد المشروع

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

02

انتقل إلى Ask first

يوقف Ask first التنفيذ قبل الإجراءات التي تغير شيئاً، حتى تتمكن من قراءة كل إجراء قبل تشغيله. استخدم Plan only عندما تريد رؤية الخطوات أولاً وتشغيل شيء واحد فقط. الخطة تبقى بعد إعادة التشغيل، لذا يمكنك العودة إليها لاحقاً.

03

صف العطل

اذكر اسم البرنامج، وجهازي المضيف والهدف، والعرض، وقل إن الأجهزة ملكك. قدم تفاصيل الاتصال من ملاحظات مختبرك ولا تخمن أي منها. قل أي بناء يعمل على الهدف، وأي ملف PDB ينتمي إليه.

04

تحقق من النتيجة

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

قائمة فحص الجلسة

debug-session.txt
# Debug session checklist
1. Build the app with debug symbols and keep the PDB
2. Note the build the crash happened on
3. Start the debugger on the host machine
4. Attach to the app running on the target
5. Reproduce the crash with the smallest input
6. Save a crash dump on the target
7. Save the faulting thread's call stack to stack.txt
8. Read the exception code and the top frames
9. Match the first frame to a source line
10. Propose a minimal fix and rebuild
11. Run the test again and note what changed

قائمة فحص نصية بسيطة لجلسة تصحيح أخطاء واحدة بين جهازين مختبر. تغطي البناء مع الرموز، الربط، إعادة إنتاج العطل بأصغر مدخل، حفظ صورة ذاكرة وخط المكالمة، قراءة الإطارات العليا، وتنتهي بتشغيل اختبار بعد الإصلاح، مع ملاحظات ما تغير. انسخها إلى مجلد المشروع وعدّلها لتتناسب مع مختبرك. انسخها وعدّلها.

تحليل عطل باستخدام مصحح الأخطاء عن بُعد في Windows

الربط من جهاز المضيف

المهمة: اربط من جهاز المضيف إلى برنامجك الخاص الذي يعمل على هدف المختبر. اربط أولاً. افتح مجلد المشروع في StatusRivet، انتقل إلى Ask first ووصف الإعداد. يشغل Shell وضع سطر الأوامر لمصحح الأخطاء الخاص بك بتفاصيل الاتصال التي تعطيه، وتظهر البطاقة ما إذا كان الربط قد نجح من خلال رمز الخروج الحقيقي. لا يخترع الوكيل إعدادات الاتصال، لذا خذ المضيف والهدف والمنفذ من ملاحظات مختبرك الخاصة. تصحيح الأخطاء عن بُعد لأجهزتك المختبرية فقط، وليس لجهاز لا تملكه. اقرأ البطاقة قبل الخطوة التالية. إذا فشل الربط، لا ينبغي تشغيل أي شيء آخر، وأصلح الاتصال أولاً، ثم اطلب مرة أخرى. تحتفظ البطاقة أيضاً بالأمر الدقيق، حتى تتمكن من تكراره لاحقاً.

احفظ صورة ذاكرة وخط المكالمة

المهمة: بعد أن تعيد إنتاج العطل على الهدف بأصغر مدخل، احفظ الأدلة. احفظ الملفين. يطلب Shell من مصحح الأخطاء كتابة صورة خطأ وحفظ خط المكالمة لسلسلة الخلل في ملف نصي، وتظهر البطاوات كلا النتيجتين. مدخل مصحح الأخطاء JIT في Windows في الهدف يبدأ مصحح الأخطاء تلقائياً عند تعطل التطبيق. هذا إعداد نظامي، لذا غيّره فقط على جهاز اختبار، دوّن القيمة السابقة واستعددها لاحقاً. للعثور على سبب خطأ النظام من صورة مصغرة، ابدأ من خط المكالمة المحفوظ. توافق على كل خطوة في وضع Ask first، وتحتفظ بكلا الملفين مع قائمة التحقق للشخص التالي الذي يقرأ القضية. سمِّ الملفات بناءً على البناء حتى لا يخلط أحد بينها.

ربط إطار بسطر مصدر

المهمة: اربط الإطار الأعلى بكودك. ابدأ بالرموز. يفتح read_file ملف stack.txt، ويبحث grep في المشروع عن اسم الدالة ورمز الاستثناء، مثل 0xC0000005 لخطأ انتهاك الوصول، ويفتح read_file ملف المصدر عند ذلك السطر. مع ملف PDB المطابق، تظهر السلسلة أسماء الدوال وملفات المصدر وأرقام الأسطر، بينما بدونها ترى العناوين فقط. جهاز متجمد ينتهي بـ BSOD مع فشل فحص أمان النواة هو حالة لهذا الروتين بالضبط: صورة ذاكرة، سلسلة، مصدر. اقرأ الأدلة بنفسك قبل أن يعدل الوكيل أي شيء، لأن الوكيل يعمل من النص ولا يمكنه التمرير خلال البرنامج لك. للتمرير، استخدم مصحح الأخطاء الخاص بك وأخبر الوكيل بما رأيته.

اقترح الإصلاح وأعد تشغيل الاختبار

المهمة: حوّل النتيجة إلى تغيير. يقترح edit_file فرقاً بسيطاً، مثل فحص فارغ مفقود أو فهرس خاطئ، وفي وضع Ask first يوقف الوكيل حتى تتمكن من قراءة الأسطر المتغيرة. يشغل Shell بعد ذلك أمر البناء الخاص بك، مع الرموز، وأمر الاختبار الخاص بك، وتبلغ البطاقات رموز الخروج الحقيقية. يمكن أن يظهر خطأ BSOD بسبب تلف كومة وضع النواة في برنامج تشغيل كتبته بعد وقت طويل من الكتابة الخاطئة، لذا تحقق من المخازن المكتوبة سابقاً في السلسلة، وليس فقط الإطار الأخير. يتم التعامل مع خطأ BSOD لاستثناء غير متوقع على هدف المختبر بنفس الطريقة. اقبل الفرق فقط بعد نجاح الاختبار، واكتب ما تغير. اختبر قبل القبول. إذا فشل الاختبار لا يزال، احتفظ بالسلسلة الجديدة وابدأ الحلقة مرة أخرى من الخطوة الثانية.

StatusRivet لنظام Windows

أعد إعداد جلسة المختبر

تحميل StatusRivet ↗