Отладка исключения IndexOutOfRangeException в WinDBG - PullRequest
0 голосов
/ 15 мая 2011

Я пытаюсь отладить некоторый исполняемый файл .NET (для которого у меня нет исходного кода), который ведет себя странно.

При подключении к нему с помощью WinDBG я заметил, что он генерирует исключение IndexOutOfRangeException.

Я пытаюсь понять, какая строка на самом деле выдает это исключение - как я могу увидеть доступ к индексу, который вызывает это?

Я могу видеть стек, используя! CLRStack, но это нене приведет меня к точной строке кода, которая его выбросила.

Это то, что я вижу в! CLRStack:

 0015ec9c 6f1459d8 System.Management.Instrumentation.InstrumentedAssembly+TypeInfo.Fire(System.Object)
0015eccc 6f144bdc System.Management.Instrumentation.InstrumentedAssembly.Fire(System.Type, System.Object)
0015ecd8 6f145164 System.Management.Instrumentation.InstrumentedAssembly.Fire(System.Object)
0015ecec 6f142268 System.Management.Instrumentation.Instrumentation.Fire(System.Object)
0015ecf8 034ce47b InstallerLibrary.InstallerInterface.WMIEventGenerator.FireEvent(System.Object)
0015ed2c 0393970c InstallerLibrary.InstallerInterface.WMIEventGenerator.GenerateServerAlive(UInt32)
0015ed54 039396b7 InstallerLibrary.InstallerInterface.InstallerInterface.NotifyServerAlive(UInt32)
0015ed60 03939655 InstallerLibrary.InstallaterManager.NotifyServerAlive(UInt32)
0015ed88 00580f13 InstallerInit.Class1.Main(System.String[])

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Информация о номере строки хранится в pdbs. Если у вас нет приватных символов, то! Clrstack не сможет предоставить

Расширение sosex может обеспечить смещение IL при использовании! Mk, даже если нет pdbs.

Чтобы увидеть доступ к индексу, который вызывает это, вы должны посмотреть на местных жителей, используя! Clrstack -a или sosex! Mdv

0 голосов
/ 27 марта 2012

Используйте! Dso для сброса объектов стека во время исключения.Вы также получите индекс в виде целого числа в стеке.Это поможет вам сузить код.

Также используйте! Dumpheap -type IndexOutOfRangeException.И обратите внимание на адрес объекта (скажем, ххх).Теперь используйте! Pe xxx, чтобы увидеть стек исключений для IndexOutOfRangeException.

...