التعرف على كائن التزامن معلقة اثنين من الطرفات التنفيذية الثالثة

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

سؤال

أنا أستخدم أداة الطرف الثالث ، والتي تستخدم مكونًا إضافيًا من الطرف الرابع. في بعض الأحيان ، سيتم تعليق الأداة عند إطلاقها. عند النظر إلى آثار المكدس ، يمكنني رؤية بعض المواضيع تنتظر على WaitforsingleObject ، ورهني هو أنهم يحجبون بعضهم البعض. تبدأ بعض المواضيع في أداة حزب 3RT ، والبعض الآخر في البرنامج المساعد الرابع.

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

  1. اكتشف ما هي كائنات التزامن التي تنتظر حاليًا
  2. اكتشف من قام بإنشاء كائنات التزامن هذه

الأدوات الموجودة حاليًا هي VS2005 و Windbg و Process Explorer. OS هو النافذة 7 64 بت. أي اقتراحات؟

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

المحلول

أنا معتاد على Windbg ، لذلك يمكنني أن أعطيك بعض الأشياء لتجربتها هناك. الأول هو الحصول على رموزك بشكل صحيح:

.symfix C: WebSyMbols .Reload

وعمق إطار المكدس الخاص بك يتراجع:

. Kframes 1000

ثم سأذهب إلى! uniqstack ، والتي ستقضي على المداخن المكررة وتوفر لك بعض الوقت:

! uniqstack -b

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

يعد معرفة كائنات المزامنة التي تنتظرها أسهل بكثير من جلسة تصحيح kernel ، من وضع المستخدم الذي ستحتاج إلى تعقب المقابض والقيام بمقبض! هل exe 32bit أو 64bit؟

فيما يتعلق بمعرفة من قام بإنشاء الكائنات ، فإن أفضل رهان لك هو تشغيل تتبع المقبض عبر Htrace ، وتشغيل السيناريو ، ثم تفريغ تسجيل التتبع.

حظا طيبا وفقك الله،

-الشاشة

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