تصحيح الأخطاء

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

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

علم أصول الكلمات

إدخال سجل كمبيوتر من Mark II، مع عثة مثبتة على الصفحة

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

هناك قصة شهيرة من أربعينيات القرن العشرين تحكيها الأدميرال جريس هوبر . [1] فبينما كانت تعمل على كمبيوتر مارك الثاني في جامعة هارفارد، اكتشف زملاؤها عثة عالقة في مرحل أعاق التشغيل وكتبوا في سجل الأحداث "أول حالة فعلية لخلل تم العثور عليه". ورغم أنها ربما تكون مزحة ، حيث تخلط بين معنيي الخلل (البيولوجية والعيب)، إلا أن القصة تشير إلى أن المصطلح كان مستخدمًا في مجال الكمبيوتر في ذلك الوقت.

وبالمثل، استُخدم مصطلح تصحيح الأخطاء في علم الطيران قبل دخوله عالم أجهزة الكمبيوتر. وقد استخدم ج. روبرت أوبنهايمر ، مدير مشروع مانهاتن للقنبلة الذرية في الحرب العالمية الثانية في لوس ألاموس، هذا المصطلح في رسالة إلى الدكتور إرنست لورانس في جامعة كاليفورنيا في بيركلي، بتاريخ 27 أكتوبر 1944، [2] بشأن توظيف موظفين فنيين إضافيين. يستخدم مدخل قاموس أوكسفورد الإنجليزي لمصطلح تصحيح الأخطاء مصطلح تصحيح الأخطاء في إشارة إلى اختبار محرك الطائرة في مقال نُشر عام 1945 في مجلة الجمعية الملكية للطيران. ويشير مقال نُشر في مجلة "Airforce" (يونيو 1945، ص 50) إلى تصحيح أخطاء كاميرات الطائرات.

إن المقالة الرائدة التي كتبها جيل [3] في عام 1951 هي أقدم مناقشة متعمقة لأخطاء البرمجة، لكنها لا تستخدم مصطلح الخطأ أو تصحيح الأخطاء .

في المكتبة الرقمية لـ ACM ، تم استخدام مصطلح التصحيح لأول مرة في ثلاث أوراق من اجتماعات ACM الوطنية لعام 1952. [4] [5] [6] اثنان من الثلاثة يستخدمان المصطلح بين علامتي اقتباس.

بحلول عام 1963، أصبح تصحيح الأخطاء مصطلحًا شائعًا إلى حد أنه تم ذكره بشكل عابر دون تفسير في الصفحة الأولى من دليل CTSS . [7]

نِطَاق

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

أدوات

عادةً ما يتم إجراء تصحيح الأخطاء على وحدات تحكم ألعاب الفيديو باستخدام أجهزة خاصة مثل وحدة تصحيح أخطاء Xbox المخصصة للمطورين.

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

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

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

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

لتصحيح أخطاء الأجهزة الإلكترونية (مثل أجهزة الكمبيوتر ) وكذلك البرامج منخفضة المستوى (مثل وحدات BIOS وبرامج تشغيل الأجهزة ) والبرامج الثابتة ، غالبًا ما تُستخدم أدوات مثل أجهزة رسم الذبذبات أو المحللات المنطقية أو محاكيات الدائرة الداخلية (ICEs)، بمفردها أو بالاشتراك مع غيرها. يمكن لمحاكاة الدائرة الداخلية أن تؤدي العديد من مهام مصحح البرامج النموذجية على البرامج منخفضة المستوى والبرامج الثابتة .

عملية التصحيح

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

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

بعد تبسيط حالة الاختبار بشكل كافٍ، يمكن للمبرمج استخدام أداة تصحيح الأخطاء لفحص حالات البرنامج (قيم المتغيرات، بالإضافة إلى مكدس النداء ) وتعقب أصل المشكلة (المشاكل). بدلاً من ذلك، يمكن استخدام التتبع . في الحالات البسيطة، يكون التتبع مجرد عدد قليل من عبارات الطباعة التي تُخرج قيم المتغيرات في نقاط معينة أثناء تنفيذ البرنامج. [ بحاجة لمصدر ]

التقنيات

  • تستخدم عملية التصحيح التفاعلية أدوات تصحيح تسمح بمعالجة تنفيذ البرنامج خطوة بخطوة وإيقافه مؤقتًا لفحص حالته أو تغييرها. يمكن تنفيذ البرامج الفرعية أو استدعاءات الوظائف عادةً بأقصى سرعة وإيقافها مؤقتًا مرة أخرى عند العودة إلى المتصل بها، أو نفسها بخطوة واحدة، أو أي مزيج من هذه الخيارات. يمكن تثبيت نقاط ضبط تسمح بتنفيذ التعليمات البرمجية بسرعة كاملة والتي لا يُشتبه في أنها معيبة، ثم تتوقف عند نقطة معينة. يعد وضع نقطة ضبط مباشرة بعد نهاية حلقة البرنامج طريقة ملائمة لتقييم التعليمات البرمجية المتكررة. تتوفر نقاط المراقبة بشكل شائع، حيث يمكن أن يستمر التنفيذ حتى يتغير متغير معين، ونقاط الالتقاط التي تتسبب في توقف المصحح لأنواع معينة من أحداث البرنامج، مثل الاستثناءات أو تحميل مكتبة مشتركة.
  • تصحيح أخطاء الطباعة أو تتبعها هو عملية مراقبة (مباشرة أو مسجلة) عبارات التتبع أو عبارات الطباعة التي تشير إلى تدفق تنفيذ عملية وتقدم البيانات. يمكن إجراء التتبع باستخدام أدوات متخصصة (مثل تتبع GDB) أو عن طريق إدراج عبارات التتبع في الكود المصدر. يُطلق على الأخير أحيانًا اسمتصحيح أخطاء printf ، بسبب استخدامprintfفي لغة C. تم تشغيل هذا النوع من التصحيح بواسطة الأمر TRON في الإصدارات الأصلية منBASIC. يرمز TRON إلى "Trace On". يتسبب TRON في طباعة أرقام الأسطر لكل سطر أوامر BASIC أثناء تشغيل البرنامج.
  • تتبع النشاط يشبه التتبع (أعلاه)، ولكن بدلاً من تتبع تنفيذ البرنامج بتعليمات أو وظائف واحدة في كل مرة، فإنه يتبع نشاط البرنامج بناءً على إجمالي الوقت الذي يقضيه المعالج/وحدة المعالجة المركزية في تنفيذ أجزاء معينة من التعليمات البرمجية. يتم تقديم هذا عادةً كجزء من وقت تنفيذ البرنامج الذي يقضيه في معالجة التعليمات داخل عناوين ذاكرة محددة (برامج التعليمات البرمجية الآلية) أو وحدات برامج معينة (لغة عالية المستوى أو برامج مجمعة). إذا تبين أن البرنامج الذي يتم تصحيح أخطائه يقضي جزءًا كبيرًا من وقت تنفيذه داخل مناطق التتبع، فقد يشير هذا إلى سوء تخصيص وقت المعالج بسبب منطق البرنامج الخاطئ، أو على الأقل تخصيص غير فعال لوقت المعالج الذي يمكن أن يستفيد من جهود التحسين.
  • التصحيح عن بعد هو عملية تصحيح أخطاء برنامج يعمل على نظام مختلف عن المصحح. لبدء التصحيح عن بعد، يتصل المصحح بنظام بعيد عبر رابط اتصالات مثل شبكة المنطقة المحلية. يمكن للمصحح بعد ذلك التحكم في تنفيذ البرنامج على النظام البعيد واسترجاع المعلومات حول حالته.
  • تصحيح الأخطاء بعد الوفاة هو تصحيح أخطاء البرنامج بعد تعطله بالفعل . غالبًا ما تتضمن التقنيات ذات الصلة تقنيات تتبع مختلفة مثل فحص ملفات السجل، وإخراج مكدس نداء عند التعطل، [8] وتحليل تفريغ الذاكرة (أو تفريغ النواة ) للعملية المعطلة. يمكن الحصول على تفريغ العملية تلقائيًا بواسطة النظام (على سبيل المثال، عندما تنتهي العملية بسبب استثناء غير معالج)، أو من خلال تعليمات أدخلها المبرمج، أو يدويًا بواسطة المستخدم التفاعلي.
  • خوارزمية "سياج الذئب": وصف إدوارد جاوس هذه الخوارزمية البسيطة ولكن المفيدة جدًا والمشهورة الآن في مقال عام 1982 لمجلة Communications of the ACM على النحو التالي: "يوجد ذئب واحد في ألاسكا؛ كيف تجده؟ أولاً، قم ببناء سياج في منتصف الولاية، وانتظر حتى يعوي الذئب، وحدد أي جانب من السياج يقع عليه. كرر العملية على هذا الجانب فقط، حتى تصل إلى النقطة التي يمكنك فيها رؤية الذئب." [9] يتم تنفيذ ذلك على سبيل المثال في نظام التحكم في إصدار Git كأمر git bisect ، والذي يستخدم الخوارزمية أعلاه لتحديد أي التزام أدخل خطأ معينًا.
  • تصحيح الأخطاء عن طريق التسجيل وإعادة التشغيل هو أسلوب إنشاء تسجيل لتنفيذ البرنامج (على سبيل المثال باستخدام أداة تصحيح الأخطاء المجانية rr من Mozilla ؛ تمكين التصحيح/التنفيذ القابل للعكس)، والذي يمكن إعادة تشغيله وتصحيح أخطائه بشكل تفاعلي. مفيد لتصحيح الأخطاء عن بعد وتصحيح أخطاء العيوب المتقطعة وغير الحتمية وغيرها من العيوب التي يصعب إعادة إنتاجها.
  • تصحيح أخطاء السفر عبر الزمن هي عملية العودة بالزمن إلى الوراء من خلال الكود المصدر (على سبيل المثال باستخدام Undo LiveRecorder ) لفهم ما يحدث أثناء تنفيذ برنامج كمبيوتر؛ للسماح للمستخدمين بالتفاعل مع البرنامج؛ لتغيير التاريخ إذا رغبوا في ذلك ومشاهدة كيفية استجابة البرنامج.
  • تصحيح أخطاء دلتا  – تقنية لأتمتة تبسيط حالات الاختبار. [10] : ص 123 
  • الضغط على الصف  - تقنية عزل الفشل داخل الاختبار باستخدام التضمين التدريجي لأجزاء من الاختبار الفاشل. [11] [12]
  • تتبع السببية : هناك تقنيات لتتبع سلاسل السبب والنتيجة في الحساب. [13] يمكن تصميم هذه التقنيات لأخطاء محددة، مثل إلغاء مرجعية المؤشر الفارغ. [14]

إصلاح الأخطاء تلقائيًا

إصلاح الأخطاء التلقائي هو الإصلاح التلقائي لأخطاء البرامج دون تدخل مبرمج بشري. [15] [16] [17] ويشار إليه أيضًا باسم إنشاء التصحيحات التلقائية أو إصلاح الأخطاء التلقائي أو إصلاح البرنامج التلقائي . [17] الهدف النموذجي لهذه التقنيات هو إنشاء تصحيحات صحيحة تلقائيًا للقضاء على الأخطاء في برامج الكمبيوتر دون التسبب في تراجع البرنامج . [18]

تصحيح أخطاء الأنظمة المضمنة

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

على الرغم من تحدي عدم التجانس المذكور أعلاه، فقد تم تطوير بعض أدوات تصحيح الأخطاء تجاريًا بالإضافة إلى النماذج الأولية البحثية. تأتي أمثلة الحلول التجارية من Green Hills Software ، [19] Lauterbach GmbH [20] و Microchip's MPLAB-ICD (لأداة تصحيح الأخطاء داخل الدائرة). مثالان لأدوات النماذج الأولية البحثية هما Aveksha [21] و Flocklab. [22] تستفيد جميعها من وظيفة متوفرة في المعالجات المضمنة منخفضة التكلفة، وهي وحدة تصحيح الأخطاء على الشريحة (OCDM)، والتي يتم الكشف عن إشاراتها من خلال واجهة JTAG القياسية . يتم معايرة هذه الأجهزة بناءً على مقدار التغيير المطلوب في التطبيق ومعدل الأحداث التي يمكنها مواكبة ذلك.

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

مكافحة التصحيح

إن مكافحة تصحيح الأخطاء هي "تنفيذ تقنية واحدة أو أكثر داخل كود الكمبيوتر والتي تعيق محاولات الهندسة العكسية أو تصحيح أخطاء عملية مستهدفة". [23] يتم استخدامها بنشاط من قبل الناشرين المعترف بهم في مخططات حماية النسخ ، ولكن يتم استخدامها أيضًا من قبل البرامج الضارة لتعقيد اكتشافها وإزالتها. [24] تشمل التقنيات المستخدمة في مكافحة تصحيح الأخطاء ما يلي:

  • يعتمد على واجهة برمجة التطبيقات: التحقق من وجود مصحح أخطاء باستخدام معلومات النظام
  • استنادًا إلى الاستثناءات: تحقق لمعرفة ما إذا كانت الاستثناءات تتداخل مع
  • كتل العمليات والخيوط: تحقق مما إذا كان قد تم التلاعب بكتل العمليات والخيوط
  • الكود المعدل: التحقق من تعديلات الكود التي أجراها مصحح الأخطاء الذي يتعامل مع نقاط توقف البرنامج
  • استنادًا إلى الأجهزة والسجلات: التحقق من نقاط توقف الأجهزة وسجلات وحدة المعالجة المركزية
  • التوقيت والزمن الكامن: التحقق من الوقت المستغرق لتنفيذ التعليمات
  • اكتشاف المصحح ومعاقبته [24]

كان هناك مثال مبكر لمكافحة التصحيح في الإصدارات المبكرة من Microsoft Word ، والتي إذا تم اكتشاف مصحح أخطاء، فإنها تنتج رسالة تقول، "شجرة الشر تحمل ثمارًا مرة. الآن يتم تدمير قرص البرنامج"، وبعد ذلك يتسبب في إصدار محرك الأقراص المرنة لأصوات مزعجة بقصد تخويف المستخدم وإبعاده عن محاولة القيام بذلك مرة أخرى. [25] [26]

انظر أيضا

مراجع

  1. ^ "InfoWorld Oct 5, 1981". 5 أكتوبر 1981. مؤرشف من الأصل في 18 سبتمبر 2019. تم الاسترجاع 17 يوليو 2019 .
  2. ^ "نسخة مؤرشفة". مؤرشفة من الأصل في 2019-11-21 . تم استرجاعها في 2019-12-17 .{{cite web}}: CS1 maint: archived copy as title (link)
  3. ^ S. Gill, The Diagnosis of Mistakes in Programmes on the EDSAC Archived 2020-03-06 at the Wayback Machine , Proceedings of the Royal Society of London. Series A, Mathematical and Physical Sciences, المجلد 206، العدد 1087 (22 مايو 1951)، ص 538-554
  4. ^ روبرت في دي كامبل، تطور الحوسبة الآلية، أرشيف 2019-09-18 على موقع واي باك مشين ، وقائع الاجتماع الوطني لجمعية الحوسبة الآلية عام 1952 (بيتسبرغ)، ص 29-32، 1952.
  5. ^ أليكس أوردن، حل أنظمة التفاوتات الخطية على جهاز كمبيوتر رقمي، وقائع الاجتماع الوطني لجمعية الحوسبة الآلية عام 1952 (بيتسبرغ)، ص 91-95، 1952.
  6. ^ هوارد ب. ديموث، جون ب. جاكسون، إدموند كلاين، ن. متروبوليس، والتر أورفيدال، جيمس هـ. ريتشاردسون، MANIAC doi=10.1145/800259.808982، وقائع الاجتماع الوطني لجمعية مكائن ​​الحوسبة الآلية لعام 1952 (تورنتو)، ص. 13-16
  7. ^ نظام تقاسم الوقت المتوافق محفوظ في 2012-05-27 على موقع واي باك مشين ، مطبعة معهد ماساتشوستس للتكنولوجيا، 1963
  8. ^ "Postmortem Debugging". مؤرشف من الأصل في 2019-12-17 . تم الاسترجاع 2019-12-17 .
  9. ^ EJ Gauss (1982). "Pracniques: The 'Wolf Fence' Algorithm for Debugging". Communications of the ACM . 25 (11): 780. doi : 10.1145/358690.358695 . S2CID  672811.
  10. ^ زيلر، أندرياس (2005). لماذا تفشل البرامج: دليل لتصحيح الأخطاء بشكل منهجي . مورجان كوفمان. ISBN 1-55860-866-4.
  11. ^ "كينت بيك، اضربهم عالياً، اضربهم منخفضاً: اختبار الانحدار وضغط المهارة". مؤرشف من الأصل في 11 مارس 2012.
  12. ^ Rainsberger, JB (28 مارس 2022). "The Saff Squeeze". The Code Whisperer . تم الاسترجاع في 28 مارس 2022 .
  13. ^ زيلر، أندرياس (2002-11-01). "عزل سلاسل السبب والنتيجة من برامج الكمبيوتر". ملاحظات هندسة البرمجيات ACM SIGSOFT . 27 (6): 1-10. doi :10.1145/605466.605468. ISSN  0163-5948. S2CID  12098165.
  14. ^ Bond, Michael D.; Nethercote, Nicholas; Kent, Stephen W.; Guyer, Samuel Z.; McKinley, Kathryn S. (2007). "Tracking bad apples". Proceedings of the 22nd annual ACM SIGPLAN conference on Object oriented programming systems and applications - OOPSLA '07 . p. 405. doi :10.1145/1297027.1297057. ISBN 9781595937865. S2CID  2832749.
  15. ^ رينارد، مارتن سي. (2008). "المنظور الفني لتصحيح أخطاء البرامج". اتصالات جمعية الحوسبة الآلية . 51 (12): 86. doi :10.1145/1409360.1409381. S2CID  28629846.
  16. ^ هارمان، مارك (2010). "تقنيات التصحيح الآلي". اتصالات ACM . 53 (5): 108. doi :10.1145/1735223.1735248. S2CID  9729944.
  17. ^ ab Gazzola, Luca; Micucci, Daniela; Mariani, Leonardo (2019). "الإصلاح التلقائي للبرمجيات: دراسة استقصائية" (PDF) . معاملات IEEE في هندسة البرمجيات . 45 (1): 34–67. doi : 10.1109/TSE.2017.2755013 . hdl : 10281/184798. S2CID  57764123.
  18. ^ تان، شين هوي؛ رويشودري، أبيك (2015). "relifix: الإصلاح الآلي لانحدارات البرمجيات". مؤتمر IEEE/ACM الدولي السابع والثلاثون حول هندسة البرمجيات لعام 2015. IEEE. ص. 471-482. doi :10.1109/ICSE.2015. ISBN 978-1-4799-1934-5. S2CID  17125466.
  19. ^ "SuperTrace Probe hardware debugger". www.ghs.com . مؤرشف من الأصل في 2017-12-01 . تم الاسترجاع في 2017-11-25 .
  20. ^ "أدوات المصحح والتتبع في الوقت الفعلي". www.lauterbach.com . مؤرشف من الأصل في 2022-01-25 . تم الاسترجاع 2020-06-05 .
  21. ^ تانكريتي، ماثيو؛ حسين، محمد سجاد؛ باغشي، سوراب؛ راغوناثان، فيجاي (2011). "أفيكشا". وقائع مؤتمر رابطة آلات الحوسبة التاسع حول أنظمة الاستشعار الشبكية المضمنة . سينسيس 2011. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. ص 288-301. doi :10.1145/2070942.2070972. ISBN 9781450307185. S2CID  14769602.
  22. ^ ليم، رومان؛ فيراري، فيديريكو؛ زيمرلينج، ماركو؛ والسر، كريستوف؛ سومر، فيليب؛ بويتل، جان (2013). "FlockLab". وقائع المؤتمر الدولي الثاني عشر حول معالجة المعلومات في شبكات الاستشعار . IPSN '13. نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. ص. 153-166. doi :10.1145/2461381.2461402. ISBN 9781450319591. S2CID  447045.
  23. ^ شيلدز، تايلر (2008-12-02). "سلسلة مكافحة التصحيح – الجزء الأول". فيراكود . مؤرشف من الأصل في 2016-10-19 . تم الاسترجاع في 2009-03-17 .
  24. ^ ab "حماية البرمجيات من خلال مكافحة التصحيح مايكل ن. جاجنون، ستيفن تايلور، أنوب جوش" (PDF) . مؤرشف من الأصل (PDF) في 2011-10-01 . تم الاسترجاع في 2010-10-25 .
  25. ^ روس جيه أندرسون (2001-03-23). ​​هندسة الأمن . وايلي. ص. 684. ISBN 0-471-38922-6.
  26. ^ "Microsoft Word for DOS 1.15". مؤرشف من الأصل في 2013-05-14 . تم الاسترجاع 2013-06-22 .

قراءة إضافية

  • أجانز، ديفيد جيه. (2002). تصحيح الأخطاء: القواعد التسع التي لا غنى عنها للعثور على أكثر مشاكل البرامج والأجهزة مراوغة. AMACOM. ISBN 0-8144-7168-4.
  • بلوندن، بيل (2003). طرد الأرواح الشريرة من البرمجيات: دليل لتصحيح أخطاء الكود القديم وتحسينه . دار نشر إيه بريس. رقم ISBN 1-59059-234-4.
  • فورد، آن ر.؛ تيوري، توبي ج. (2002). التصحيح العملي في لغة سي++. برنتيس هول. رقم 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. OpenTask. ISBN 978-0-9558328-0-2.
  • زيلر، أندرياس (2009). لماذا تفشل البرامج، الطبعة الثانية: دليل التصحيح المنهجي . مورجان كوفمان. رقم ISBN 978-0-1237-4515-6.
  • بيجي ألدريتش كيدويل، مطاردة حشرة الكمبيوتر المراوغة، حوليات معهد مهندسي الكهرباء والإلكترونيات لتاريخ الحوسبة، 1998.
  • أنماط تحليل تفريغ الأعطال – مقالات متعمقة حول تحليل والعثور على الأخطاء في تفريغات الأعطال
  • أساسيات تصحيح الأخطاء – كيفية تحسين مهارات تصحيح الأخطاء لديك
  • تصحيح الأخطاء المستند إلى المكونات الإضافية للأنظمة المضمنة
  • اختبار الأنظمة المضمنة وتصحيح أخطائها – حول توليد المدخلات الرقمية – نتائج استطلاع رأي حول اختبار الأنظمة المضمنة وتصحيح أخطائها، Byte Paradigm (تم أرشفته من الأصل في 12 يناير 2012)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Debugging&oldid=1243820841"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate