2009-05-07 7 views
0

У меня есть ночной сборщик сценариев DOS, который вызывает файл devenv.exe для создания файла решения. С перерывами я наблюдаю крах devenv.com. Я получаю диалог DW20.exe «поделиться своей болью».Как получить стек вызовов для прерывистого сбоя devenv.com?

1) Если нажата кнопка отладки, мне не предоставляется обычное окно «Выберите ваш отладчик». Скорее, он ничего не делает.

2) Если я запустил Visual Studio и попытаюсь подключиться к devenv.com, в нем говорится, что приложение зашло в тупик или ждет завершения операции. (Я думаю, потому что он отлажен DW20.exe)

Что бы вы порекомендовали, чтобы получить приличный стек вызовов?

EDIT

Я был успешным в получении 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 

EDIT 2

я узнал, что есть такие замечательные расширения СОС к WinDBG. Видимо, я могу использовать их для отладки C# компилятора ...

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 не обнаружил никаких исключений.

ответ

0

Это немного многословный, поэтому я отправлю его в качестве ответа. Это взято с сайта Microsoft Connect в ответ на мою проблему. Читатель может найти его отношение:

Дата: Четверг, 7 мая 2009 19:14:52 -0700

Приветствия от Microsoft Connect!

Это уведомление было создано для элементов обратной связи: проблемы с ночной сборкой (ведро 365749762), которые вы отправили на сайт Microsoft Connect.

Благодарим за сообщение об этой проблеме, с которой вы столкнулись с Visual Studio 2005, и спасибо за предоставленные вами дампы!

Похоже, проблема связана с cslangsvc.dll (встроенным компилятором C#), который DevEnv вызывает для выполнения вашей сборки.

Наше предложение обойти эту проблему должно было бы попытаться использовать MSBuild вместо того, чтобы делать ваши ночные сборки, поскольку это должно быть более надежным, чем автоматизация DevEnv/build. В частности, вы, вероятно, избежите этой конкретной проблемы, поскольку MSBuild будет использовать csc.exe для компиляции, а не cslangsvc.dll.

У нас вряд ли появится еще один выпуск VS 2005, чтобы исправить проблему cslangsvc, поэтому я разрешаю эту ошибку. Не исправляет, но, пожалуйста, активируйте ее, если вы все еще видите проблему при использовании MSBuild.

Еще раз спасибо за информацию по этой проблеме!

Alex Turner менеджер программы Visual C# компилятор

+1

Wow - это довольно быстрый поворот от MS. И ПМ не менее, а не фронтовая поддержка хрюкает. Я не удивлен, что они не будут работать, учитывая, что это на VS2005. Надеюсь, что обходной путь поможет вам. –

+0

Использование msbuild значительно улучшило стабильность нашего процесса сборки. – GregC

1

Вы можете попытаться устанавливать Debugging Tools for Windows затем использовать -iae вариант (для NTSD/CDB) или -I вариант (для WinDBG), чтобы иметь один из отладчиков из этого пакета быть ЛТ/AeDebug отладчик.

+0

Спасибо. Я только что сделал это. Воспроизведение: ожидание сбоя компилятора. – GregC

+0

Обновлен вопрос. Пожалуйста, дайте мне знать, если вы хотите, чтобы я создал там еще один вопрос. – GregC

+0

Похоже, что исключение происходит в собственном коде - попробуйте использовать команду «.symfix» и посмотрите, помогает ли получение символов с сервера Microsoft получить лучший «анализ». Кроме этого, я ничего не знаю о специфике cslangsvc или чего-либо еще, связанного с тем, что происходит в компиляции C#. Но Microsoft вполне может заинтересоваться дампом сбоя (используйте команду «.dump»). –

0

Наконец-то я пришел к типу исключения и callstack для компилятора ошибок. Я сделал это, сохранив полный файл дампа (.dump/ma c: \ myCSCdump.dmp), затем открыв файл дампа, как вы бы открыли любой другой файл проекта в VS2005. При нажатии на кнопку запуска производится следующее в окне стека вызовов:!

[email protected]() + 0x3c bytes 

cslangsvc.dll ALLOCHOST :: ThrowOutOfMemoryException() + 0x10 байт
cslangsvc.dll PageHeap :: AllocPages() + 0xc1fd8 байт
cslangsvc.dll SYMTBL :: GrowTable() + 0x5b байт cslangsvc.dll BSYMMGR :: AddChild() + 0x3b байт cslangsvc.dll BSYMMGR :: CreateGlobalSym() + 0x2ba байт cslangsvc.dll BSYMMGR!!!: : CreateMethod() + 0xc байты
cslangsvc.dll! IMPORTER :: ImportMethod() + 0x1d9 байт
cslangsvc.dll! ИМПОРТЕР :: DefineImportedType() + 0x3b2 байт cslangsvc.dll! CLSDREC :: prepareAggregate() + 0x8d байт cslangsvc.dll! Compiler :: ForceAggStates() + 0x8e байт
cslangsvc.dll! COMPILER :: ForceAggStates() + 0x127 bytes cslangsvc.dll! COMPILER :: EnsureState() + 0x2e байты cslangsvc.dll!CLSDREC :: CheckForTypeErrors() + 0x23 байт
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! Compiler :: CheckForTypeErrors() + 0x100 байт cslangsvc.dll! COMPILER :: CompileAll() + 0x546 bytes cslangsvc.dll! COMPILER :: Compile() + 0x7c байты cslangsvc.dll! CController :: RunCompiler() + 0x177 байт 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 байт
[email protected]() + 0x171 байт

 Смежные вопросы

  • Нет связанных вопросов^_^