ما هي طريقة سريعة لتتبع الدخول والخروج من وظائف في البصرية ستوديو 2005 ج ++ برنامج مؤشرات؟

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

سؤال

ولدي حوادث متقطعة وقعت في المكتبات ActiveMQ بلدي بسبب الطريقة التي أنا باستخدام API activemq-حزب الشعب الكمبودي. انها تريد ان تكون أسهل بكثير لتصحيح المشكلة إذا أنا يمكن أن نلاحظ كل وظيفة يطلق عليها التي أدت إلى وقوع الحادث. هل هناك أي طرق سريعة لتتبع الدخول والخروج من وظائف في البصرية ستوديو 2005 ج ++ مؤشرات البرنامج؟

ويرجع الفضل في ذلك مسبقا!

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

المحلول

استخدم كائن الراسم. شيء من هذا القبيل:


class Tracer
{
public:
  Tracer(const char *functionName) : functionName_(functionName)
  {
    cout << "Entering function " << functionName_ << endl;
  }

  ~Tracer()
  {
    cout << "Exiting function " << functionName_ << endl;
  }

  const char *functionName_;
};

والآن يمكنك ببساطة مثيل كائن الراسم في الجزء العلوي وظيفة، وأنه سيتم طباعة تلقائيا "الخروج ..." عندما يتم إنهاء وظيفة والمدمر يسمى:


void foo()
{
  Tracer t("foo");
   ...
}

نصائح أخرى

وبينما يتم إرفاق المصحح إلى عملية، يمكنك انقر بالزر الايمن في شفرة المصدر وحدد "breakpoint-> إضافة TracePoint"، مع النص الذي تريده (يتم توفيره حتى بعض في الكلية).

ووTracepoint هو في الواقع نقطة مع حقل "عندما ضرب" على بعض الوظائف طابعة الرسالة، وأنها لا فعلا كسر هذه العملية. لقد وجدت أنه من المفيد الأقوياء: كما أن لديها وظيفة $ الكلي، الذي يفعل بالضبط ما تحتاجه: طباعة وظيفة هو الحال في (شريطة أن لديه معلومات التصحيح المتاحة ...)، و$ رقم الموضوع

.

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

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