Как получить стек вызовов для прерывистого сбоя 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

Я узнал, что в WinDbg есть замечательные расширения SOS.Очевидно, я могу использовать их для отладки компилятора 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 не нашел никаких исключений.

Это было полезно?

Решение 3

Это немного многословно, поэтому я опубликую это в качестве ответа.Оно взято с сайта 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.

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

Алекс Тернер Менеджер программ Компилятор 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 !ОБЪЕМ СТРАНИЦЫ::AllocPages() + 0xc1fd8 байт
cslangsvc.dll !SYMTBL::GrowTable() + 0x5b байт cslangsvc.dll!BSYMMGR::addChild() + 0x3b байт cslangsvc.dll!BSYMMGR::CreateGlobalSym() + 0x2 ба байт cslangsvc.dll!BSYMMGR::CreateMethod() + 0xc байт
cslangsvc.dll !ИМПОРТЕР::ImportMethod() + 0x1d9 байт
cslangsvc.dll !ИМПОРТЕР::DefineImportedType() + 0x3b2 байта cslangsvc.dll!CLSDREC::prepareAggregate() + 0x8d байт cslangsvc.dll!КОМПИЛЯТОР::ForceAggStates() + 0x8e байт
cslangsvc.dll !КОМПИЛЯТОР::ForceAggStates() + 0x127 байт cslangsvc.dll!КОМПИЛЯТОР::EnsureState() + 0x2e байта cslangsvc.dll!CLSDREC::CheckForTypeErrors() + 0x23 байта
cslangsvc.dll !CLSDREC::CheckForTypeErrors() + 0x2 ба байт
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 байт cslangsvc.dll!КОМПИЛЯТОР ::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 байт
mscorwks.dll !_CLRToCOMWorker@8() + 0x171 байт

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top