كيفية الحصول على مكدس مكالمات لتعطل موقع devenv.com بشكل متقطع؟

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

سؤال

لدي برنامج نصي دفعي DOS مصمم ليلاً يستدعي devenv.exe لإنشاء ملف حل.بشكل متقطع ألاحظ تعطل موقع devenv.com.أحصل على مربع حوار DW20.exe "شارك ألمك".

1) إذا تم الضغط على زر التصحيح، فلن تظهر لي نافذة "اختر مصحح الأخطاء" المعتادة.وبدلا من ذلك، فإنه لا يفعل شيئا.

2) إذا قمت بتشغيل Visual Studio وحاولت الارتباط بموقع devenv.com، فسيظهر لي أن التطبيق يبدو في طريق مسدود أو في انتظار انتهاء العملية.(أعتقد أنه تم تصحيحه بواسطة DW20.exe)

ماذا تنصحني أن أفعل للحصول على مكدس مكالمات لائق؟

يحرر

لقد نجحت في جعل WinDBG يعلق.نفذ الأمر k.هل يبدو ما يلي شيئًا ذا معنى يمكن نقله إلى فريق المترجم؟هل هناك طريقة للنظر إلى الاستثناء الحالي؟

(e90.fb8): Break instruction exception - code 80000003 (!!! second chance !!!)
eax=0012ccb8 ebx=04ed2750 ecx=0111bdc4 edx=5a57f004 esi=00000000 edi=14ed1000
eip=77e4bef7 esp=0012ccb4 ebp=0012cd08 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\kernel32.dll - 
kernel32!RaiseException+0x3c:
77e4bef7 5e              pop     esi
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
0:000> k
ChildEBP RetAddr  
WARNING: Stack unwind information not available. Following frames may be wrong.
0012cd08 5a760cf1 kernel32!RaiseException+0x3c
0012cd58 5a766105 cslangsvc!InMemoryCompile+0x4c6c1
0012cd7c 5a767375 cslangsvc!InMemoryCompile+0x51ad5
0012cd84 5a767637 cslangsvc!InMemoryCompile+0x52d45
00000000 00000000 cslangsvc!InMemoryCompile+0x53007

أحاول الحصول على !analyze -v للعمل.

0:000> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************

***** OS symbols are WRONG. Please fix symbols to do analysis.

*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: ntdll!_PEB                                    ***
***                                                                   ***
*************************************************************************
c0000005 Exception in ext.analyze debugger extension.
PC: 014d7875  VA: 00000000  R/W: 0  Parameter: 0001003f

تحرير 2

اكتشفت أن هناك امتدادات SOS الرائعة لـ WinDBG.يبدو أنه يمكنني استخدامها لتصحيح أخطاء C# Compiler ...

0:000> !PrintException
There is no current managed exception on this thread
0:000> !clrstack
OS Thread Id: 0x9fc (0)
ESP       EIP     
0012ee08 77e4bef7 [ComPlusMethodFrameGeneric: 0012ee08] Microsoft.Build.Tasks.Hosting.ICscHostObject.Compile()
0012ee18 6be671ab Microsoft.Build.Tasks.Csc.CallHostObjectToExecute()
0012ee48 6c0aed17 Microsoft.Build.Utilities.ToolTask.Execute()
0012ee7c 6bcbb348 Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode, System.Collections.Hashtable, Microsoft.Build.BuildEngine.BuildPropertyGroup, Boolean ByRef)
0012ef24 6bcadf87 Microsoft.Build.BuildEngine.Target.ExecuteAllTasks(Microsoft.Build.BuildEngine.DependencyAnalysisResult, System.Collections.Hashtable, System.Collections.Hashtable, Microsoft.Build.BuildEngine.ItemBucket, System.Collections.ArrayList, Microsoft.Build.BuildEngine.BuildPropertyGroup)
0012efa0 6bcac7c0 Microsoft.Build.BuildEngine.Target.ExecuteAllTasks()
0012efec 6bcad05b Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary)
0012f070 6bcacfa6 Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary)
0012f0f4 6bcacfa6 Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary)
0012f178 6bcacfa6 Microsoft.Build.BuildEngine.Target.Build(System.Collections.IDictionary)
0012f1fc 6bc9b20d Microsoft.Build.BuildEngine.Project.DoBuild(System.String[], System.Collections.IDictionary, Boolean)
0012f250 6bca2134 Microsoft.Build.BuildEngine.Engine.BuildProject(Microsoft.Build.BuildEngine.Project, System.String[], System.Collections.IDictionary, Microsoft.Build.BuildEngine.BuildSettings, Boolean)
0012f2ac 6bc9af03 Microsoft.Build.BuildEngine.Project.Build(System.String[], System.Collections.IDictionary)
0012f2c0 04711a36 Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTarget(System.String, System.Collections.IDictionary)
0012f4f4 79f68cde [GCFrame: 0012f4f4] 
0012f650 79f68cde [ComMethodFrame: 0012f650] 

ما زلت أبحث عن طريقة لفحص محتويات الاستثناء.!PrintException لم يجد أية استثناءات.

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

المحلول 3

هذا كثير الكلام بعض الشيء، لذا سأقوم بنشره كرد.لقد تم أخذه من موقع Microsoft Connect، ردًا على مشكلتي.قد يجدها القارئ ذات صلة:

تاريخ:الخميس، 7 مايو 2009 19:14:52 -0700

تحية من Microsoft Connect!

تم إنشاء هذا الإشعار لعنصر التعليقات:مشاكل البناء الليلية (الحاوية 365749762) التي قمت بإرسالها إلى موقع Microsoft Connect.

شكرًا للإبلاغ عن هذه المشكلة التي واجهتها مع Visual Studio 2005، وشكرًا على الملفات التي قدمتها!

يبدو أن المشكلة موجودة في ملف cslangsvc.dll (مترجم C# قيد التشغيل)، والذي يتصل به DevEnv لتنفيذ البناء الخاص بك.

إن اقتراحنا للعمل حول هذه المشكلة هو محاولة استخدام MSBuild بدلاً من ذلك للقيام ببناءك الليلي ، لأن هذا يجب أن يكون أكثر قوة من أتمتة /بناء.على وجه التحديد، من المحتمل أن تتجنب هذه المشكلة بالتحديد لأن MSBuild سيستخدم csc.exe للتجميع بدلاً من cslangsvc.dll.

من غير المحتمل أن يكون لدينا إصدار VS 2005 آخر لحل مشكلة cslangsvc، لذلك أقوم بحل هذا الخطأ الذي لن يتم إصلاحه، ولكن يرجى إعادة تنشيطه إذا كنت لا تزال ترى مشكلة عند استخدام MSBuild.

شكرا مرة أخرى لجميع المعلومات حول هذه المسألة!

مدير برنامج Alex Turner Visual C#

نصائح أخرى

قد تحاول التثبيت أدوات التصحيح لنظام التشغيل Windows ثم استخدم -iae الخيار (لـ NTSD/CDB) أو -I الخيار (لـ WinDBG) أن يكون أحد مصححات الأخطاء من تلك الحزمة هو مصحح أخطاء JIT/AeDebug.

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

kernel32.dll!_RaiseException@16()  + 0x3c bytes 

cslangsvc.dll!ALLOCHOST::ThrowOutOfMemoryException() + 0x10 بايت
cslangsvc.dll!PAGEHEAP::AllocPages() + 0xc1fd8 بايت
cslangsvc.dll!SYMTBL::GrowTable() + 0x5b bytes cslangsvc.dll!BSYMMGR::AddChild() + 0x3b bytes cslangsvc.dll!BSYMMGR::CreateGlobalSym() + 0x2ba bytes cslangsvc.dll!BSYMMGR::CreateMethod() + 0xc bytes
cslangsvc.dll!IMPORTER::ImportMethod() + 0x1d9 بايت
cslangsvc.dll! المستورد :: defineImportedType () + 0x3b2 بايت cslangsvc.dll!
cslangsvc.dll!COMPILER::ForceAggStates() + 0x127 bytes cslangsvc.dll!COMPILER::EnsureState() + 0x2e bytes cslangsvc.dll!CLSDREC::CheckForTypeErrors() + 0x23 bytes
cslangsvc.dll!CLSDREC::CheckForTypeErrors() + 0x2ba بايت
cslangsvc.dll!CLSDREC::CheckForTypeErrors() + 0x80 بايت
cslangsvc.dll!CLSDREC::CheckForTypeErrors() + 0x8a بايت
cslangsvc.dll!CLSDREC::CheckForTypeErrors() + 0x8a بايت
cslangsvc.dll!CLSDREC::CheckForTypeErrors() + 0x8a بايت
cslangsvc.dll! برنامج التحويل البرمجي :: checkfortypeerrors () + 0x100 بايت cslangsvc.dll! المترجمة :: compileall () + 0x546 bytes cslangsvc.dll! 0x177 Bytes cslangsvc.dll! ccontroller :: compile () + 0x16 بايت
cslangsvc.dll!CCSharpProjectSite::BuildProjectCore() + 0x5a بايت
cslangsvc.dll!CProjectSite::BuildProject() + 0x11 بايت
csproj.dll!CCSharpBuildCompiler::DoMainBuild() + 0x88 بايت
csproj.dll!CCscMSBuildHostObject::Compile() + 0x4e بايت
mscorwks.dll!_CLRToCOMWorker@8() + 0x171 بايت

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