2014-12-30 2 views
1

Я новичок в WinDBG и пытаюсь проанализировать файл дампа мини-сбоев, созданный IIS 8.0 для веб-приложения ASP.Net. Я вижу, что есть некоторые вызовы, которые повторяются снова и снова и вызывают переполнение стека. Вот эти вызовы:Загрузка внешней DLL в WinDBG

000000350eccaa00 000007fdc466c6e3 System.IO.__Error.WinIOError(Int32, System.String) 
000000350eccaa50 000007fdc386e706 System.IO.FileStream.Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean, Boolean) 
000000350eccab40 000007fdc387a466 System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, System.IO.FileOptions, System.String, Boolean, Boolean, Boolean) 
000000350eccabf0 000007fdc38793e2 System.IO.StreamWriter..ctor(System.String, Boolean, System.Text.Encoding, Int32, Boolean) 
000000350eccaca0 000007fdc3879306 System.IO.StreamWriter..ctor(System.String, Boolean, System.Text.Encoding, Int32) 
000000350eccace0 000007fdc38fe262 System.IO.StreamWriter..ctor(System.String, Boolean) 
000000350eccad50 000007fdc4143d1f System.IO.File.AppendText(System.String) 
000000350eccad90 000007fd65519778 Custom.External.dll!Unknown 
000000350eccae00 000007fd6551826f Custom.External.dll!Unknown 
000000350eccae70 000007fd6550e465 Custom.External.dll!Unknown 
000000350eccaf10 000007fd6550e92e Custom.External.dll!Unknown 
000000350eccaf50 000007fd65519873 Custom.External.dll!Unknown 
000000350ecccf28 000007fdc4c9feb5 [HelperMethodFrame: 000000350ecccf28] 

Как вы можете видеть, Custom.External.dll не вызывает отображает нет информации о том, какие в настоящее время называются функциями. Как загрузить эту DLL в WinDBG, чтобы она могла правильно отлаживать эти вызовы?

+0

Выполнить '! Analysis' в окне командной строки WinDbg, добавить свой вывод в свой вопрос. –

ответ

1

Это не похоже на переполнение стека. Переполнение стека обычно требует более 5 вызовов в стеке (до тех пор, пока стек не был заполнен чем-то еще раньше). Из имени метода это похоже на исключение IOException. Чтобы получить тип исключения, введите

~#s; *** Switch to the thread with the exception 
.exr -1; *** Native exception info 
.loadby sos clr; *** Load .NET extension 
!pe; *** Use .NET extension to get .NET exception info 
!clrstack; *** Might differ from the stack in the exception 

Кроме этого, у вас могут не быть символов для внешней DLL. Если это сторонняя библиотека, вы не можете делать много против нее. Если это ваш собственный DLL, положить PDB-файлы в папку (не там, где хранятся символы MS) и сделать

.sympath+ c:\mydirectory 
.reload 

Затем выполните команды снова и посмотреть, улучшилось ли положение.

+0

Это, безусловно, переполнение стека, поскольку я отчетливо вижу, что это приводит к этой ошибке. Я только разместил один блок вызовов, но этот же блок вызовов повторяется много раз, пока переполнение стека не произойдет. Но я попробую ваше предложение по загрузке PDB для моей DLL ... Я думаю, что это решение, которое я искал. Я дам вам знать, если это сработает. Благодаря!! – blizz

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