هل من الممكن الحصول على قيم المعلمات "لكل إطار في مكدس الاستدعاءات في NET.

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا أتحدث عن رمز. NET المدارة. إذا كان لنا أن تشغيل أي برنامج وإرفاق VS لأنه يمكننا أن نرى قيم المعلمات "لكل طريقة في مكدس الاستدعاءات. أود أن إنشاء تسجيل الحل الذي سيتم تسجيل جميع المعلمات القيم "لكل طريقة في مكدس الاستدعاءات. فعلا أحتاج هذه المعلومات في حالة حدوث استثناء.

وأنا أعلم أنه من الممكن مع API التنميط. ولكن أتساءل هل من الممكن مع رمز تمكن فقط؟

وUPDATE: حسنا، ربما مع صافي نقي أنه من المستحيل. ثم قد يكون مع بعض نوع من التعليمات البرمجية غير المدارة ... وهذه النقطة هي أن تفعل هذا من ضمن التطبيق نفسه. تطبيق في حالة استثناء يمكن أن يسميه البعض مكتبة (قد يكون غير المدارة) التي ترجع معلومات حول القيم طرق "في مكدس الاستدعاءات. مجرد أفكار ...

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

المحلول

لا يتم تخزين

والقيم معلمات في المثال StackFrame. في الواقع، فهي لم تسجل / دخولك على الإطلاق، إلا إذا اخترت القيام بذلك صراحة.

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

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

نصائح أخرى

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

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

وبدلا من ذلك، يمكنك تصحيح التطبيق باستخدام WinDbg. وclstack! /! سوف أوامر احة دبي للسيليكون تتيح لك فحص المعلمات والأشياء المكدس.

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