سؤال

أنا منذ فترة طويلة Delphi Dev ، وفي الماضي أستخدم أداة طرف ثالث لتسجيل وتصحيح الأخطاء أثناء التطوير (تسمى Smart Inspect) ولكن الآن بعد أن قمت بالترقية إلى Delphi Xe ، أريد محاولة استخدام IDE للتصحيح.

سؤالي هو ، بالنظر إلى وظيفة مثل

procedure MyFunction;
var
    str : string;
begin
    str := 'Foo';
    //Debug, show value of str?
    str := AnotherFunction(str);
    //Debug, show value of str?
end;

كيف يمكنني التصحيح والحصول على قيمة STR ، دون القيام بأشياء غبية مثل ShowMessage (STR) ؛

إذا كان هناك مقطع فيديو في مكان ما (أو مقال) ، فأنا أكثر من سعيد للقراءة.

هل هناك طريقة لمشاهدة/إخراج قيمة المتغيرات.

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

المحلول

حسنًا ، يأتي Delphi XE مع تسجيلات الرموز ، لكنني أشعر أنك تتحدث عن مصحح الأخطاء نفسها.

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

يمكنك أيضًا الحصول على شيء مشابه للساعة ، ولكن مع معلومات أكثر تفصيلاً (خاصة بالنسبة للأنواع المهيكلة مثل الكائنات) باستخدام فحص (Alt-F5). أيضا ، التقييم/تعديل (Ctrl-F7) سيسمح لك بكتابة التعبيرات وتقييمها. إنه ليس مفصلاً تمامًا مثل التفتيش ، لكنه يمنحك مرونة أكبر بكثير.

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

نصائح أخرى

إذا كنت ترغب في استخدام Debugger IDE فقط ، فافعل ما يلي:

  • ضع نقطة توقف في مكان ما
  • انقر بزر الماوس الأيمن على دائرة BreakPointr واختر "خصائص نقطة الإيقاف ..."
  • اضغط على زر "متقدم" لإظهار المزيد من الخيارات
  • قم بإلغاء تحديد مربع الاختيار "كسر"
  • ثم استخدم مربعات "رسالة السجل" و "eval Expression" لإدخال قيم التتبع

سيتم إرسال مثل هذه الرسائل إلى جزء تصحيح "سجل الأحداث". انقر بزر الماوس الأيمن على الجزء واختر "الخصائص". هناك يمكنك تصفية ("الرسائل") / Hilight ("الألوان") الرسائل النزرة كما كنت.

1) يمكنك استخدام وظيفة OutputDebugString لإخراج سلسلة النافذة تصحيح

2) يمكنك استخدام CODESITE Express. أوصي الفيديو من Coderage 5 كنقطة انطلاق لاستخدام الرموز

إجابات أخرى كلها صحيحة.

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

ولكن نظرًا لأن Delphi XE يتضمن الرموز ، يمكنك تجاوز ما يتجاوزه تقييم التعبير في نقاط التوقف بالنسبة لك. ومع ذلك ، يتطلب موقع الرمز تعديل الكود الخاص بك لإضافة بعض التسجيل. لكنه أفضل بكثير من مربع الرسائل.

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

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

يمكنك أيضًا التحقق من سجل 4 دلفي مشروع.

أنا أفضل تلميحات تصحيح الأخطاء. بعد الانقطاع إلى مصحح الأخطاء ، انقل الماوس إلى "STR" في أي مكان في الكود الخاص بك وسترى قيمته الحالية. كما يمكنك تسليط الضوء على بعض العبارات عن طريق الماوس وتقييمها. على سبيل المثال ، تسليط الضوء على "OtherFunction (Str)" ووضع الماوس فوقه.

لا حرج في أي من الإجابات الأخرى ، لكنني أردت فقط إضافة هذه الوظائف المفيدة.

procedure DebugString ( const s : string ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( s ) ) ;
  {$ENDIF}
end ;

procedure DebugString ( const s : string ; args : array of const ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( Format ( s , args ) ) ) ;
  {$ENDIF}
end ;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top