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

يعود مصطلح "bug" بمعنى العيب إلى عام 1878 على الأقل عندما كتب توماس إديسون "الأخطاء والصعوبات الصغيرة" في اختراعاته على أنها "Bugs".
من القصص الشائعة في أربعينيات القرن العشرين قصة الأدميرال غريس هوبر . [ 1 ] أثناء عملها على حاسوب مارك 2 في جامعة هارفارد، اكتشف زملاؤها عثة عالقة في مرحل، مما أعاق عمله، فكتبوا في سجلّهم: "أول حالة حقيقية لاكتشاف خلل برمجي". ورغم أن القصة ربما كانت مزحة ، إذ جمعت بين معنيي كلمة "خلل" (بيولوجي وعيب)، إلا أنها تشير إلى أن المصطلح كان مستخدمًا في مجال الحواسيب آنذاك.
وبالمثل، استُخدم مصطلح "تصحيح الأخطاء" في مجال الطيران قبل دخوله عالم الحواسيب . فقد ورد هذا المصطلح في رسالة من ج. روبرت أوبنهايمر ، مدير مشروع مانهاتن للقنبلة الذرية في لوس ألاموس خلال الحرب العالمية الثانية ، إلى الدكتور إرنست لورانس في جامعة كاليفورنيا، بيركلي، بتاريخ 27 أكتوبر 1944، [ 2 ] بخصوص توظيف كوادر فنية إضافية. ويستخدم قاموس أكسفورد الإنجليزي مصطلح " تصحيح الأخطاء " في سياق اختبار محركات الطائرات، وذلك في مقال نُشر عام 1945 في مجلة الجمعية الملكية للملاحة الجوية. كما يشير مقال في مجلة "القوات الجوية" (يونيو 1945، صفحة 50) إلى تصحيح أخطاء كاميرات الطائرات.
تُعد المقالة الرائدة التي كتبها جيل [ 3 ] في عام 1951 أقدم مناقشة متعمقة لأخطاء البرمجة، لكنها لا تستخدم مصطلح خطأ أو تصحيح الأخطاء .
في المكتبة الرقمية لجمعية ACM ، استُخدم مصطلح " تصحيح الأخطاء " لأول مرة في ثلاث أوراق بحثية من اجتماعات ACM الوطنية لعام 1952. [ 4 ] [ 5 ] [ 6 ] اثنتان من هذه الأوراق الثلاث تستخدمان المصطلح بين علامتي اقتباس.
بحلول عام 1963، أصبح مصطلح تصحيح الأخطاء شائعًا بما يكفي ليتم ذكره عرضًا دون شرح في الصفحة 1 من دليل CTSS . [ 7 ]
نِطَاق
مع ازدياد تعقيد البرمجيات والأنظمة الإلكترونية عمومًا، توسعت تقنيات تصحيح الأخطاء الشائعة لتشمل طرقًا أكثر للكشف عن الحالات الشاذة، وتقييم تأثيرها، وجدولة تصحيحات البرامج أو التحديثات الكاملة للنظام. يُفضّل استخدام مصطلحي "الحالة الشاذة" و"التناقض" لكونهما أكثر حيادية ، لتجنب استخدام مصطلحات مثل "الخطأ" و"العيب" أو "الخلل" التي قد توحي بضرورة إصلاح جميع ما يُسمى بالأخطاء أو العيوب أو الخلل (بأي ثمن). بدلًا من ذلك، يُمكن إجراء تقييم للأثر لتحديد ما إذا كانت التغييرات اللازمة لإزالة الحالة الشاذة (أو التناقض ) ستكون فعّالة من حيث التكلفة للنظام، أو ما إذا كان إصدار جديد مُجدول قد يجعل هذه التغييرات غير ضرورية. ليست كل المشكلات حرجة من حيث السلامة أو المهمة في النظام. من المهم أيضًا تجنب الوضع الذي قد يكون فيه التغيير أكثر إزعاجًا للمستخدمين على المدى الطويل من التعايش مع المشكلة ( حيث يكون "العلاج أسوأ من المرض"). إن اتخاذ القرارات بناءً على مدى قبول بعض الحالات الشاذة من شأنه أن يجنبنا ثقافة "الخلو التام من العيوب"، حيث قد يميل البعض إلى إنكار وجود المشاكل ليظهر النظام خالياً من العيوب . وبالنظر إلى الجوانب الأخرى، مثل تقييم الأثر من حيث التكلفة والعائد، فإن تقنيات تصحيح الأخطاء ستتوسع لتشمل تحديد مدى تكرار الحالات الشاذة (عدد مرات حدوث نفس "الأخطاء")، مما يساعد في تقييم تأثيرها على النظام ككل.
أدوات

تتفاوت عملية تصحيح الأخطاء في تعقيدها، بدءًا من إصلاح الأخطاء البسيطة وصولًا إلى تنفيذ مهام طويلة ومرهقة لجمع البيانات وتحليلها وجدولة التحديثات. تُعدّ مهارة المبرمج في تصحيح الأخطاء عاملًا رئيسيًا في قدرته على تحديد المشكلة، إلا أن صعوبة تصحيح أخطاء البرامج تختلف اختلافًا كبيرًا باختلاف تعقيد النظام، وتعتمد أيضًا، إلى حد ما، على لغة (لغات) البرمجة المستخدمة والأدوات المتاحة، مثل أدوات تصحيح الأخطاء . أدوات تصحيح الأخطاء هي أدوات برمجية تُمكّن المبرمج من مراقبة تنفيذ البرنامج، وإيقافه، وإعادة تشغيله، وتعيين نقاط توقف ، وتغيير القيم في الذاكرة. يُطلق مصطلح "مصحح الأخطاء" أيضًا على الشخص الذي يقوم بعملية تصحيح الأخطاء.
عمومًا، تُسهّل لغات البرمجة عالية المستوى ، مثل جافا ، عملية تصحيح الأخطاء، لاحتوائها على ميزات مثل معالجة الاستثناءات والتحقق من أنواع البيانات ، مما يُسهّل اكتشاف مصادر السلوك غير المتوقع. أما في لغات البرمجة الأخرى، مثل سي أو لغة التجميع ، فقد تتسبب الأخطاء في مشاكل خفية، مثل تلف الذاكرة ، وغالبًا ما يصعب تحديد مصدر المشكلة. في هذه الحالات، قد تكون هناك حاجة إلى أدوات تصحيح أخطاء الذاكرة .
في بعض الحالات، قد تكون أدوات البرمجيات العامة ذات الطبيعة اللغوية مفيدة للغاية. وتتخذ هذه الأدوات شكل أدوات تحليل الشفرة الثابتة . تبحث هذه الأدوات عن مجموعة محددة من المشكلات المعروفة، بعضها شائع وبعضها نادر، داخل الشفرة المصدرية، مع التركيز بشكل أكبر على الدلالات (مثل تدفق البيانات) بدلاً من بناء الجملة، كما تفعل المترجمات والمفسرات.
تتوفر أدوات تجارية ومجانية للغات برمجة مختلفة؛ يدّعي بعضها القدرة على اكتشاف مئات المشاكل المختلفة. تُعدّ هذه الأدوات مفيدة للغاية عند فحص هياكل البيانات الضخمة، حيث يصعب إجراء مراجعة شاملة للبرنامج. من الأمثلة الشائعة على المشاكل التي قد تكتشفها هذه الأدوات، الوصول غير الدقيق إلى قيمة متغير قبل إسنادها إليه. كما تُجري بعض هذه الأدوات فحصًا دقيقًا لأنواع البيانات حتى في حال عدم اشتراط اللغة لذلك، ما يجعلها أكثر فعالية في تحديد الأخطاء المحتملة في البرامج الصحيحة نحويًا. إلا أن هذه الأدوات معروفة بنتائجها الإيجابية الخاطئة، حيث تُصنّف البرامج الصحيحة على أنها مشكوك فيها. يُعدّ برنامج lint القديم في أنظمة يونكس مثالًا مبكرًا على ذلك.
لتصحيح أخطاء الأجهزة الإلكترونية (مثل أجهزة الحاسوب ) والبرمجيات منخفضة المستوى (مثل أنظمة BIOS وبرامج تشغيل الأجهزة ) والبرامج الثابتة ، تُستخدم عادةً أدوات مثل راسمات الإشارة ، ومحللات المنطق ، ومحاكيات الدوائر المتكاملة (ICEs)، منفردةً أو مجتمعةً. ويمكن لمحاكاة الدوائر المتكاملة (ICE) أن تؤدي العديد من مهام مصحح أخطاء البرمجيات التقليدية على البرمجيات منخفضة المستوى والبرامج الثابتة .
عملية تصحيح الأخطاء
تبدأ عملية تصحيح الأخطاء عادةً بتحديد خطوات إعادة إنتاج المشكلة. قد تكون هذه مهمة معقدة، خاصةً مع العمليات المتوازية وبعض أخطاء هايزن، على سبيل المثال. كما أن بيئة المستخدم وسجل الاستخدام قد يُصعّبان إعادة إنتاج المشكلة.
بعد إعادة إنتاج الخطأ، قد يلزم تبسيط مدخلات البرنامج لتسهيل عملية تصحيحه. على سبيل المثال، قد يتسبب خطأ في المُصرّف في تعطل البرنامج عند تحليل ملف مصدر كبير. مع ذلك، بعد تبسيط حالة الاختبار، قد تكفي بضعة أسطر فقط من ملف المصدر الأصلي لإعادة إنتاج نفس العطل. يمكن إجراء التبسيط يدويًا باستخدام أسلوب فرق تسد ، حيث يحاول المبرمج إزالة بعض أجزاء حالة الاختبار الأصلية ثم يتحقق مما إذا كانت المشكلة لا تزال قائمة. عند تصحيح الأخطاء في واجهة المستخدم الرسومية ، يمكن للمبرمج محاولة تخطي بعض تفاعلات المستخدم من وصف المشكلة الأصلي للتحقق مما إذا كانت الإجراءات المتبقية كافية للتسبب في حدوث الخطأ.
بعد تبسيط حالة الاختبار بشكل كافٍ، يمكن للمبرمج استخدام أداة تصحيح الأخطاء لفحص حالات البرنامج (قيم المتغيرات، بالإضافة إلى مكدس الاستدعاءات ) وتحديد مصدر المشكلة (المشاكل) . بدلاً من ذلك، يمكن استخدام التتبع . في الحالات البسيطة، يقتصر التتبع على بضع عبارات طباعة تُظهر قيم المتغيرات في نقاط محددة أثناء تنفيذ البرنامج. [ 8 ]
التقنيات
- يستخدم التصحيح التفاعلي أدوات تصحيح تسمح بمعالجة تنفيذ البرنامج خطوة بخطوة، مع إمكانية إيقافه مؤقتًا لفحص حالته أو تعديلها. عادةً ما تُنفَّذ الإجراءات الفرعية أو استدعاءات الدوال بكامل سرعتها، ثم تُوقف مؤقتًا عند العودة إلى الدالة المُستدعِية، أو تُنفَّذ هي نفسها خطوة بخطوة، أو أي مزيج من هذه الخيارات. يمكن تثبيت نقاط توقف تسمح بتنفيذ التعليمات البرمجية غير المشتبه في وجود خطأ فيها بكامل سرعتها، ثم تتوقف عند النقطة التي يُشتبه في وجود خطأ فيها. يُعد وضع نقطة توقف مباشرةً بعد نهاية حلقة البرنامج طريقةً ملائمةً لتقييم التعليمات البرمجية المتكررة. تتوفر عادةً نقاط مراقبة، حيث يمكن أن يستمر التنفيذ حتى يتغير متغير معين، ونقاط التقاط تُجبر المُصحِّح على التوقف لأنواع معينة من أحداث البرنامج، مثل الاستثناءات أو تحميل مكتبة مشتركة.
- تُعرف عملية تصحيح الأخطاء أو تتبع الطباعة بمراقبة عبارات التتبع (مباشرةً أو مسجلةً)، أو عبارات الطباعة، التي تُشير إلى مسار تنفيذ عملية ما وتطور البيانات. يُمكن إجراء التتبع باستخدام أدوات متخصصة (مثل أداة التتبع في GDB) أو عن طريق إدراج عبارات التتبع في شفرة المصدر. يُطلق على هذه الطريقة الأخيرة أحيانًا اسميُعزى استخدام دالة printf في لغة C إلىخاصية تصحيح الأخطاء . في الإصدارات الأصلية منBASIC، كان يتم تفعيل هذا النوع من التصحيح باستخدام الأمرTRON. يرمز TRON إلى "Trace On" (أي "تشغيل التتبع"). كان TRON يُظهر أرقام أسطر كل سطر أوامر في BASIC أثناء تشغيل البرنامج.
- تتبع النشاط يشبه التتبع المذكور أعلاه، ولكنه بدلاً من تتبع تنفيذ البرنامج تعليمةً أو دالةٍ واحدةً في كل مرة، يتتبع نشاط البرنامج بناءً على إجمالي الوقت الذي يقضيه المعالج/وحدة المعالجة المركزية في تنفيذ أجزاء معينة من التعليمات البرمجية. يُعرض هذا عادةً كنسبة من وقت تنفيذ البرنامج الذي يقضيه في معالجة التعليمات ضمن عناوين ذاكرة محددة (برامج لغة الآلة) أو وحدات برمجية معينة (برامج اللغات عالية المستوى أو البرامج المُترجمة). إذا تبين أن البرنامج الذي يتم تصحيحه يقضي نسبةً كبيرةً من وقت تنفيذه ضمن المناطق المُتتبعة، فقد يشير ذلك إلى سوء تخصيص وقت المعالج الناتج عن منطق برمجي خاطئ، أو على الأقل تخصيص غير فعال لوقت المعالج يمكن تحسينه.
- التصحيح عن بُعد هو عملية تصحيح برنامج يعمل على نظام مختلف عن نظام المُصحِّح. لبدء التصحيح عن بُعد، يتصل المُصحِّح بنظام بعيد عبر رابط اتصال، مثلشبكة محلية. وبذلك، يستطيع المُصحِّح التحكم في تنفيذ البرنامج على النظام البعيد واسترجاع معلومات حول حالته.
- تصحيح الأخطاء بعد وقوع العطل هو عملية تصحيح البرنامج بعد تعطلّه . تشمل التقنيات ذات الصلة عادةً أساليب تتبع متنوعة، مثل فحص ملفات السجل، وإخراج تسلسل استدعاء الدوال عند التعطل، [ 9 ] وتحليل تفريغ الذاكرة (أو تفريغ الذاكرة الأساسية ) للعملية المتعطلة. يمكن الحصول على تفريغ الذاكرة تلقائيًا بواسطة النظام (على سبيل المثال، عند انتهاء العملية بسبب استثناء غير معالج)، أو بواسطة تعليمة مُدخلة من قِبل المبرمج، أو يدويًا بواسطة المستخدم.
- خوارزمية "سياج الذئب": وصف إدوارد جاوس هذه الخوارزمية البسيطة، ولكنها بالغة الفائدة، والتي أصبحت مشهورة الآن، في مقال نُشر عام ١٩٨٢ في مجلة " اتصالات جمعية آلات الحوسبة" (Communications of the ACM) على النحو التالي: "يوجد ذئب واحد في ألاسكا؛ كيف تجده؟ أولًا، ابنِ سياجًا في منتصف الولاية، وانتظر حتى يعوي الذئب، ثم حدد أي جانب من السياج يقف عليه. كرر العملية على ذلك الجانب فقط، حتى تصل إلى النقطة التي يمكنك فيها رؤية الذئب." [ ١٠ ] تُطبَّق هذه الخوارزمية، على سبيل المثال، في نظام التحكم في الإصدارات Git، من خلال الأمر git bisect ، الذي يستخدم الخوارزمية المذكورة أعلاه لتحديد أي تعديل برمجي تسبب في خطأ معين.
- تُعدّ تقنية تسجيل وإعادة تشغيل تصحيح الأخطاء أسلوبًا لإنشاء تسجيل لتنفيذ البرنامج (باستخدام أداة تصحيح الأخطاء rr المجانية من موزيلا ، على سبيل المثال؛ مما يُمكّن من عكس عملية تصحيح الأخطاء/التنفيذ)، والذي يُمكن إعادة تشغيله وتصحيحه بشكل تفاعلي. وهي مفيدة لتصحيح الأخطاء عن بُعد، ولتصحيح الأخطاء المتقطعة وغير الحتمية، وغيرها من الأخطاء التي يصعب إعادة إنتاجها.
- تصحيح الأخطاء بالسفر عبر الزمن هو عملية الرجوع بالزمن عبر التعليمات البرمجية المصدرية (على سبيل المثال باستخدام Undo LiveRecorder ) لفهم ما يحدث أثناء تنفيذ برنامج الكمبيوتر؛ للسماح للمستخدمين بالتفاعل مع البرنامج؛ لتغيير السجل إذا رغبوا في ذلك ومراقبة كيفية استجابة البرنامج.
- تصحيح الأخطاء التفاضلي – أسلوب لأتمتة تبسيط حالات الاختبار. [ 11 ] : ص 123 [ 12 ]
- تقنية ساف سكويز – وهي تقنية لعزل الفشل داخل الاختبار باستخدام التداخل التدريجي لأجزاء الاختبار الفاشل. [ 13 ] [ 14 ]
- تتبع السببية : توجد تقنيات لتتبع سلاسل السبب والنتيجة في الحساب. [ 15 ] ويمكن تخصيص هذه التقنيات لمعالجة أخطاء محددة، مثل أخطاء الوصول إلى مؤشرات فارغة. [ 16 ]
- تصحيح الأخطاء العشوائي: عملية محاولة تصحيح خطأ برمجي عن طريق إجراء تعديلات غير موجهة إلى حد كبير على شفرة المصدر، مما يؤدي أحيانًا إلى مشاكل أخرى. [ 17 ]
- تحديد موقع الأعطال هو أسلوب آلي لتحديد عناصر البرنامج (العبارات، أو الأساليب، أو المكونات) التي يُحتمل أن تحتوي على أعطال. تستخدم الأساليب الحديثة التعلم الآلي لتحسين دقة تحديد الموقع. [ 18 ]
إصلاح الأخطاء تلقائيًا
إصلاح الأخطاء التلقائي هو عملية إصلاح أخطاء البرامج تلقائيًا دون تدخل المبرمج البشري. [ 19 ] [ 20 ] [ 21 ] ويُشار إليه أيضًا باسم توليد التصحيحات التلقائي ، أو إصلاح الأخطاء التلقائي ، أو إصلاح البرامج التلقائي . [ 21 ] والهدف الأساسي لهذه التقنيات هو توليد تصحيحات صحيحة تلقائيًا للقضاء على الأخطاء في البرامج دون التسبب في تراجع أدائها . [ 22 ]
تصحيح الأخطاء للأنظمة المدمجة
على عكس بيئة تصميم برامج الحاسوب العامة، تتميز بيئات الأنظمة المدمجة بكثرة المنصات المختلفة المتاحة للمطورين (بنى المعالجات، والموردين، وأنظمة التشغيل، وأنواعها المختلفة). وبحكم تعريفها، لا تُصمم الأنظمة المدمجة لأغراض عامة، بل تُطور عادةً لمهمة واحدة (أو نطاق محدود من المهام)، ويتم اختيار المنصة خصيصًا لتحسين أداء تلك المهمة. ولا يقتصر تأثير هذه الحقيقة على صعوبة عمل مطوري الأنظمة المدمجة فحسب، بل يُصعّب أيضًا عملية تصحيح الأخطاء واختبار هذه الأنظمة، نظرًا لاختلاف أدوات تصحيح الأخطاء المطلوبة باختلاف المنصات.
على الرغم من تحدي التباين المذكور آنفًا، فقد طُوِّرت بعض أدوات تصحيح الأخطاء تجاريًا، بالإضافة إلى نماذج أولية بحثية. ومن أمثلة الحلول التجارية: Green Hills Software [ 23 ] ، و Lauterbach GmbH [ 24 ] ، وMPLAB-ICD من Microchip (أداة تصحيح الأخطاء داخل الدائرة). ومن أمثلة أدوات النماذج الأولية البحثية: Aveksha [ 25 ] وFlocklab [ 26 ] . وتستفيد جميعها من وظيفة متوفرة في المعالجات المدمجة منخفضة التكلفة، وهي وحدة تصحيح الأخطاء المدمجة (OCDM)، التي تُعرَض إشاراتها عبر واجهة JTAG قياسية . ويتم تقييمها بناءً على حجم التغيير المطلوب في التطبيق ومعدل الأحداث التي يمكنها مواكبتها.
بالإضافة إلى المهمة النموذجية المتمثلة في تحديد الأخطاء في النظام، يسعى تصحيح أخطاء النظام المدمج أيضًا إلى جمع معلومات حول حالات تشغيل النظام التي يمكن استخدامها بعد ذلك لتحليل النظام: لإيجاد طرق لتعزيز أدائه أو لتحسين خصائص أخرى مهمة (مثل استهلاك الطاقة والموثوقية والاستجابة في الوقت الحقيقي وما إلى ذلك).
مكافحة التصحيح
مكافحة التصحيح هي "تطبيق تقنية أو أكثر ضمن شفرة الحاسوب لعرقلة محاولات الهندسة العكسية أو تصحيح عملية مستهدفة". [ 27 ] يستخدمها الناشرون المعروفون بكثرة في أنظمة حماية النسخ ، كما تستخدمها البرامج الضارة لتعقيد اكتشافها وإزالتها. [ 28 ] تشمل التقنيات المستخدمة في مكافحة التصحيح ما يلي:
- يعتمد على واجهة برمجة التطبيقات: التحقق من وجود مصحح الأخطاء باستخدام معلومات النظام
- على أساس الاستثناءات: تحقق مما إذا كانت الاستثناءات تتداخل معها
- كتل العمليات والخيوط: تحقق مما إذا تم التلاعب بكتل العمليات والخيوط
- الكود المُعدَّل: التحقق من تعديلات الكود التي أجراها مصحح الأخطاء الذي يتعامل مع نقاط توقف البرامج.
- التحقق من نقاط التوقف في الأجهزة وسجلات وحدة المعالجة المركزية: التحقق من نقاط التوقف في الأجهزة وسجلات وحدة المعالجة المركزية
- التوقيت وزمن الاستجابة: تحقق من الوقت المستغرق لتنفيذ التعليمات
- اكتشاف مصحح الأخطاء ومعاقبته [ 28 ]
كان أحد الأمثلة المبكرة على مكافحة تصحيح الأخطاء موجودًا في الإصدارات الأولى من برنامج مايكروسوفت وورد ، حيث كان البرنامج يُصدر رسالة تقول: "شجرة الشر تُثمر ثمارًا مُرّة. جارٍ الآن إتلاف قرص البرنامج."، وبعد ذلك كان يُصدر محرك الأقراص المرنة أصواتًا مُنذرة بهدف إخافة المستخدم ومنعه من المحاولة مرة أخرى. [ 29 ] [ 30 ]
انظر أيضاً
مراجع
- ↑ "إنفو وورلد، 5 أكتوبر 1981" . 5 أكتوبر 1981. مؤرشف من الأصل في 18 سبتمبر 2019. تم الاطلاع عليه في 17 يوليو 2019 .
- ↑ "مكتبة بانكروفت | مكتبة جامعة كاليفورنيا في بيركلي" . مؤرشف من الأصل بتاريخ 21 نوفمبر 2019. تم الاطلاع عليه بتاريخ 17 ديسمبر 2019 .
- ↑ إس. جيل، تشخيص الأخطاء في البرامج على جهاز EDSAC، مؤرشف في 2020-03-06 على موقع Wayback Machine ، وقائع الجمعية الملكية في لندن. السلسلة أ، العلوم الرياضية والفيزيائية، المجلد 206، العدد 1087 (22 مايو 1951)، الصفحات 538-554
- ↑ روبرت في دي كامبل، تطور الحوسبة الآلية مؤرشف في 2019-09-18 في Wayback Machine ، وقائع الاجتماع الوطني لجمعية ACM لعام 1952 (بيتسبرغ)، ص 29-32، 1952.
- ↑ أليكس أوردن، حل أنظمة المتباينات الخطية على جهاز كمبيوتر رقمي ، وقائع الاجتماع الوطني لجمعية آلات الحوسبة لعام 1952 (بيتسبرغ)، ص 91-95، 1952.
- ↑ هوارد ب. ديموث، جون ب. جاكسون، إدموند كلاين، ن. متروبوليس، والتر أورفدال، جيمس هـ. ريتشاردسون، MANIAC doi=10.1145/800259.808982، وقائع الاجتماع الوطني لجمعية ACM لعام 1952 (تورنتو)، ص 13-16
- ↑ نظام المشاركة الزمنية المتوافق، مؤرشف بتاريخ 27-05-2012 في أرشيف الإنترنت ، مطبعة معهد ماساتشوستس للتكنولوجيا، 1963
- ↑ شيماري، كازوماسا؛ إيشيو، تاكاشي؛ كاندا، تيتسويا؛ إينوي، كاتسورو (سبتمبر 2019). "تصحيح الأخطاء شبه الشامل للغة جافا باستخدام تتبع التنفيذ محدود الحجم". المؤتمر الدولي لهندسة البرمجيات وصيانة وتطويرها (ICSME) لعام 2019. الصفحات 398-401 . doi : 10.1109/icsme.2019.00068 . ISBN 978-1-7281-3094-1.
- ↑ "التصحيح بعد وقوع الخطأ" . دكتور دوبز . مؤرشف من الأصل بتاريخ 17-12-2019 . تم الاطلاع عليه بتاريخ 17-12-2019 .
- ↑ إي جيه جاوس (1982). "ممارسات: خوارزمية 'سياج الذئب' لتصحيح الأخطاء" . اتصالات رابطة مكائن الحوسبة . 25 (11): 780. doi : 10.1145/358690.358695 . S2CID 672811 .
- ↑ زيلر، أندرياس (2005). لماذا تفشل البرامج: دليل لتصحيح الأخطاء المنهجي . مورغان كوفمان. ISBN 1-55860-866-4.
- ↑ زيلر، أ.؛ هيلدبراندت، ر. (2002). "تبسيط وعزل المدخلات المسببة للفشل". معاملات IEEE في هندسة البرمجيات . 28 (2): 183-200 . Bibcode : 2002ITSEn..28..183Z . doi : 10.1109/32.988498 .
- ↑ "كينت بيك، اضربهم عالياً، اضربهم منخفضاً: اختبار الانحدار وضغط ساف" . مؤرشف من الأصل في 11-03-2012.
- ↑ راينزبيرجر، جيه بي (28 مارس 2022). "ضغط ساف" . همس الشفرة . مؤرشف من الأصل في 28 مارس 2022. تم الاسترجاع في 28 مارس 2022 .
- ↑ زيلر، أندرياس (1 نوفمبر 2002). "عزل سلاسل السبب والنتيجة من برامج الحاسوب". ملاحظات هندسة البرمجيات ACM SIGSOFT . 27 (6): 1-10 . doi : 10.1145/605466.605468 . ISSN 0163-5948 . S2CID 12098165 .
- ↑ بوند، مايكل د.؛ نذركوت، نيكولاس؛ كينت، ستيفن و.؛ غاير، صموئيل ز.؛ ماكينلي، كاثرين س. (2007). "تعقب العناصر الفاسدة". وقائع المؤتمر السنوي الثاني والعشرين لجمعية ACM SIGPLAN حول أنظمة وتطبيقات البرمجة كائنية التوجه - OOPSLA '07 . ص 405. doi : 10.1145/1297027.1297057 . ISBN 9781595937865. S2CID 2832749 .
- ↑ "ماذا يعني تصحيح الأخطاء باستخدام بندقية؟" . www.definitions.net . مؤرشف من الأصل بتاريخ 12 نوفمبر 2020. تم الاطلاع عليه بتاريخ 2 فبراير 2026 .
- ↑ شوان، جيفنغ؛ مونبيروس، مارتن (سبتمبر 2014). تعلم دمج مقاييس تصنيف متعددة لتحديد موقع الأعطال . المؤتمر الدولي لهندسة وصيانة وتطوير البرمجيات IEEE لعام 2014. IEEE. الصفحات 191-200 . doi : 10.1109/ICSME.2014.41 . ISBN 978-1-4799-6146-7.
- ↑ رينارد، مارتن سي. (2008). "منظور تقني: ترقيع أخطاء البرامج". اتصالات رابطة آلات الحوسبة . 51 (12): 86. doi : 10.1145/1409360.1409381 . S2CID 28629846 .
- ↑ هارمان، مارك (2010). "تقنيات الترقيع الآلي". اتصالات رابطة آلات الحوسبة . 53 (5): 108. doi : 10.1145/1735223.1735248 . S2CID 9729944 .
- 1 2 غازولا، لوكا؛ ميكوتشي، دانييلا؛ مارياني، ليوناردو (2019). "الإصلاح التلقائي للبرمجيات: دراسة استقصائية" (ملف PDF) . معاملات IEEE في هندسة البرمجيات . 45 (1): 34-67 . Bibcode : 2019ITSEn..45...34G . doi : 10.1109/TSE.2017.2755013 . hdl : 10281/184798 . S2CID 57764123 .
- ↑ تان، شين هوي؛ رويتشودري، أبهيك (2015). "ريليفيكس: الإصلاح الآلي لتراجعات البرمجيات". المؤتمر الدولي السابع والثلاثون لهندسة البرمجيات IEEE/ACM لعام 2015. IEEE. الصفحات 471-482 . doi : 10.1109/ICSE.2015.65 . ISBN 978-1-4799-1934-5. S2CID 17125466 .
- ↑ "مصحح أخطاء الأجهزة SuperTrace Probe" . www.ghs.com . مؤرشف من الأصل بتاريخ 1 ديسمبر 2017. تم الاطلاع عليه بتاريخ 25 نوفمبر 2017 .
- ↑ "أدوات تصحيح الأخطاء وتتبع الوقت الحقيقي" . www.lauterbach.com . مؤرشف من الأصل بتاريخ 25 يناير 2022. تم الاطلاع عليه بتاريخ 5 يونيو 2020 .
- ↑ تانكريتي، ماثيو؛ حسين، محمد سجاد؛ باغشي، سوراب؛ راغوناثان، فيجاي (2011). "أفيكشا". وقائع المؤتمر التاسع لجمعية الحوسبة الآلية (ACM) حول أنظمة الاستشعار الشبكية المدمجة . SenSys '11. نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 288-301 . doi : 10.1145/2070942.2070972 . ISBN 9781450307185. S2CID 14769602 .
- ↑ ليم، رومان؛ فيراري، فيديريكو؛ زيمرلينغ، ماركو؛ والسر، كريستوف؛ سومر، فيليب؛ بيوتل، يان (2013). "FlockLab". وقائع المؤتمر الدولي الثاني عشر حول معالجة المعلومات في شبكات الاستشعار . IPSN '13. نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 153-166 . doi : 10.1145/2461381.2461402 . ISBN 9781450319591. S2CID 447045 .
- ↑ شيلدز، تايلر (2008-12-02). "سلسلة مكافحة التصحيح - الجزء الأول" . فيراكود . مؤرشف من الأصل في 2016-10-19 . تم الاسترجاع في 2009-03-17 .
- 1 2 "حماية البرمجيات من خلال مكافحة التصحيح" مايكل ن. غانيون، ستيفن تايلور، أنوب غوش" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 1 أكتوبر 2011. تم الاطلاع عليه بتاريخ 25 أكتوبر 2010 .
- ↑ روس ج. أندرسون (23 مارس 2001). هندسة الأمن . وايلي. ص 684. ISBN 0-471-38922-6.
- ↑ "Microsoft Word for DOS 1.15" . مؤرشف من الأصل بتاريخ 14 مايو 2013. تم الاطلاع عليه بتاريخ 22 يونيو 2013 .
للمزيد من القراءة
- أغانس، ديفيد ج. (2002). تصحيح الأخطاء: القواعد التسع التي لا غنى عنها لإيجاد حتى أكثر مشاكل البرامج والأجهزة مراوغة . أماكوم. ISBN 0-8144-7168-4.
- بلوندن، بيل (2003). طرد الأرواح الشريرة من البرمجيات: دليل لتصحيح أخطاء وتحسين التعليمات البرمجية القديمة . دار نشر APress. رقم ISBN 1-59059-234-4.
- فورد، آن ر.؛ تيوري، توبي ج. (2002). تصحيح الأخطاء العملي في لغة C++ . برنتيس هول. ISBN 0-13-065394-2.
- غروتكر، ثورستن؛ هولتمان، أولريش. كيدينج، هولجر؛ ولوكا، ماركوس (2012). دليل المطور لتصحيح الأخطاء، الطبعة الثانية . إنشاء مساحة. رقم ISBN 978-1-4701-8552-7.
- ميتزجر، روبرت سي. (2003). تصحيح الأخطاء بالتفكير: منهج متعدد التخصصات . دار النشر الرقمية. رقم ISBN 1-55558-307-5.
- مايرز، جلينفورد جيه (2004). فن اختبار البرمجيات . جون وايلي وأولاده. ISBN 0-471-04328-1.
- روبنز، جون (2000). تصحيح أخطاء التطبيقات . مطبعة مايكروسوفت. رقم ISBN 0-7356-0886-5.
- تيليس، ماثيو أ.؛ هسيه، يوان (2001). علم تصحيح الأخطاء . مجموعة كوريوليس. ISBN 1-57610-917-8.
- فوستوكوف، ديمتري (2008). مختارات تحليل تفريغ الذاكرة، المجلد 1. أوبن تاسك. ISBN 978-0-9558328-0-2.
- زيلر، أندرياس (2009). لماذا تفشل البرامج، الطبعة الثانية: دليل لتصحيح الأخطاء المنهجي . مورغان كوفمان. ISBN 978-0-1237-4515-6.
- بيغي ألدريتش كيدويل، مطاردة خلل الكمبيوتر المراوغ ، حوليات IEEE لتاريخ الحوسبة، 1998.
روابط خارجية
- أنماط تحليل ملفات تفريغ الأعطال – مقالات متعمقة حول تحليل ملفات تفريغ الأعطال واكتشاف الأخطاء فيها
- أساسيات تصحيح الأخطاء - كيفية تحسين مهاراتك في تصحيح الأخطاء
- تصحيح الأخطاء باستخدام المكونات الإضافية للأنظمة المدمجة (مؤرشف بتاريخ 10 ديسمبر 2019 على موقع Wayback Machine)
- اختبار وتصحيح الأنظمة المدمجة - حول توليد المدخلات الرقمية - نتائج استطلاع حول اختبار وتصحيح الأنظمة المدمجة، بايت بارادايم (مؤرشف من الأصل في 12 يناير 2012)
- تصحيح الأخطاء
