كيفية وضع نقطة توقف في نهاية وظيفة في Windbg ، بحيث لا أحتاج إلى تعديلها حتى لو تمت إضافة/حذف بعض الخطوط في المصدر؟

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

سؤال

أحتاج إلى تسجيل بعض البيانات عند ضرب بعض الوظائف ، سواء في بداية التنفيذ ونهايةها. على الرغم من أنني لا أواجه مشكلة في وضع نقاط التوقف في بداية الوظائف (باستخدام bu [module]!functionname, ، لا أعرف كيفية وضع نقطة توقف في نهاية الوظيفة ، بحيث لا أحتاج إلى تعديل نقطة التوقف في كل مرة أضيف فيها/حذف الجسمين من الملف/الوظيفة. أنا متأكد من أنه سيناريو شائع جدًا ، فقط لا أعرف كيف تم ذلك !! يمكن لأي شخص توضيح؟

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

المحلول

يمكنك استخدام نقطة التوقف عند بداية الوظيفة لإعداد نقطة التوقف عند عنوان الإرجاع. مثله:

bu [module]!functionname "bp /1 @$ra \".echo Exit functionname ; g\"; .echo Enter functionname; g"

التحذير: قد لا يعمل هذا إذا تم إلقاء استثناء في الوظيفة.

نصائح أخرى

هذا ما تبحث عنه بالضبط

احصل على قيم إرجاع الوظيفة ومعلومات التنميط في .NET باستخدام Windbg

يتم شرح كيفية ضبط نقطة استراحة على عودة الوظيفة

وينطبق الشيء نفسه على التعليمات البرمجية الأصلية أيضًا.

أتمنى أن يساعدك هذا.

يمكنك استخدام أمر PT ، مما يعني خطوة للعودة التالية. على سبيل المثال ، عندما تضغط على وظيفتك عند التسول ، فإن إدخال أمر PT فقط سوف يضغط على الرمز في أي مكان تم استدعاء العائد.

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