Показаны сообщения с ярлыком microsoft. Показать все сообщения
Показаны сообщения с ярлыком microsoft. Показать все сообщения

суббота, 26 марта 2011 г.

IE9

Поставил Internet Explorer 9. Вкратце - работает очень быстро, пользоваться удобно. Можно теперь не залпать на Хром

PS - зависания view source исправили, IE9 с RoboForm 7 не тормозит при просмотре исходников

среда, 10 марта 2010 г.

Как в .cmd файлах узнать SITE IDENTITY зная имя сайта (IIS 6)

How to recognize IIS 6 site ID by its name in command line (.cmd)
***
Стояла задача: написать .cmd скрипт для Win2003/IIS6, который создавал бы сайт и настраивал его параметры

Сайт создается через утилиту iisweb /create. Параметры настраиваются через adsutil.vbs

Проблема в том, что adsutil требует на вход site identity, которую явно из iisweb не получить.
В результате написал простенький скрипт (который, правда, требует sed for windows)

Скрипт, зная имя сайта, получает в переменную окружения его id. Может, кому-нибудь пригодится...


set SITE_NAME=MySite 
set SED=utils\sed.exe
iisweb /query %SITE_NAME% | %SED% "$!d" > c_siteid.tmp
%SED% -i "s/.*(W3SVC\/\([0-9]*\)).*/\1/g" c_siteid.tmp 
set /p SITE_ID=<c_siteid.tmp
echo id=%SITE_ID%
del c_siteid.tmp
del sed*.
Бонус: команды sed

среда, 3 марта 2010 г.

Что нового в SOS.dll для 4-го .Net фреймворка

См. (наверное, правильней было бы писать "чт." тобишь "читай") в блоге Tess Fernandez

http://blogs.msdn.com/tess/archive/2010/03/01/new-commands-in-sos-for-net-4-0-part-1.aspx

Мне понравилась команда !GCWhere :-)

среда, 7 октября 2009 г.

Debugging Tools – как открывать дампы из Explorer-а (.Net Framework 2.0+)

Всем хорошего дня!

Недавно пришлось опять плотно поработать в дампами ASP.NET-овского сайта, снятыми при помощи UserDump.

Дампов было несколько, мы многократно открывали их на разных машинах, каждый раз, открывая дамп приходилось набирать мантру:

  • Open WinDbg
  • Copy длиннючий путь к sos.dll, сказать .load …\sos.dll
  • Open в WinDbg файл с дампом через control-d

Как результат, я начал гуглить на тему скриптов для дебаггера, и нашел чудную статью Carlo Cardella под названием “Never Doubt My Debugger”.

В статье было написано, как настроить WinDbg так, чтобы открывать файлы дампов .dmp в Эксплорере одним кликом (при этом, самостоятельно загрузив еще и sos.dll (sic!):

dbgexp

К сожалению, один-в-один его скрипты не запустились, поэтому я их чуть-чуть подправил, и выкладываю здесь для всеобщей пользы:

Установка

Все что нужно, это скопировать скрипты в каталог C:\Program Files\Debugging Tools for Windows (x86)\scripts (каталог надо создать) и запустить файл register.reg, который добавить в реестр правильнуб команду на открытие .dmp файлов.

Внимание!

Скрипт расчитывает на следующее:

  • Debugging Tools установлены в каталонг C:\Program Files\Debugging Tools for Windows (x86)
  • используется sos.dll из .Net Framework 2.0 или выше по пути c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\

Соответственно, если вы установили отладчик в другой каталог или у вас другой номер сборки .Net Framework, нужно подправить файлы dbgnet20.txt и/или register.dbg

понедельник, 28 сентября 2009 г.

Дело о тормозящем Internet Explorer 8

Перелез с IE8 на Хром и Мозиллу. Точнее, не совсем перелез, а низвел браузер из статуса "запускаю для просмотра любого сайта" в статус "открываю, только когда в FireFox и Chrome не работает". Реально задрал.

Две основных претензии:

* Крайне медленно запускается. Хром в этом смысле потрясающе продуман - он запускается очень быстро. Я запускаю браузер сотни раз на дню (не мой стиль держать открытыми множество закладок, да и оперативки у меня впритык). Браузер, который запускается за 2-3 секунды явно доставляет мне больше радости, чем суперуниверсальные мегатормоза.

* Невозможно пользоваться функцией view source. Просмотровщик HTML на сложных страницах открывается больше минуты. Чем, вы думаете он занимается? Он раскрашивает теги...

Update 29.09.09: Тормозит связка html source viewer - RoboForm. Робоформ мне нужен, поэтому пока перешел на view source via Notepad ++


Update 2:
Команда RoboForm подтвердила наличие проблемы, аргументируя тем, что робоформ очень тесно связан с рендерингом html, а view source на самом деле рендерит служебный html. Рекомендация RF -- откатиться до IE7, но я вместо этого заменил стандартный просмотровщик на Notepad++

Update 3:
Поставил себе Chromium с включенной поддержкой RoboForm (да! они это сделали!). Тем самым будем слезать с Мозиллы потихонечку :-)


воскресенье, 20 сентября 2009 г.

ADO.NET: Абстрактное vs Конкретное или "MS - почему?!"

К величайшему своему стыду всегда думал, что MS специально сделал классы ADO.NET для SQL Server и для OLE DB несовместимыми друг с другом. Только сегодня понял, что неправ.

А знаете почему? Потому что во всех примерах, по всему MSDN, во всех книжках код, работающий с ADO.NET пишется вот так:

SqlConnection connection = new SqlConnection(...)
SqlCommand command = connection.GetCommand(...)
SqlDataReader reader = command.ExecuteReader(...)
...

На самом деле, и Sql*-классы, и OleDb* классы совершенно логично наследуют абстрактную модель работы с данными, описанную в System.Data.Common. Это пространство имен предлагает семантику работы с данными через классы DbConnection, DbCommand и т.п.

И по всем правилам объектно-ориентированного дизайна код следует писать вот так:

DbConnection connection = new SqlConnection(...)
DbCommand command = connection.GetCommand(...)
DbDataReader reader = command.ExecuteReader(...)

Тогда программист может при необходимости изменить одну строчку, и перейти к примеру с SQLServer на MySQL (в теории, конечно. На практике все равно весь SQL надо будет переписать. Но тем не менее :-)

На практике - все пишут по примерам. Поиск на Google Code Search по C# коду дает :

То есть, грубо говоря, на каждого человека, который пишет обрашение к базе при помощи абстрактных классов, находится 8 (sic!) SqlServer-ных программистов, которые пишут обращение к БД посредством конкретных классов, не думая о возможной унификации кода и забывая, что существует более, чем один движок SQL.

Конспирологическая моя часть немедленно видит сдесь заговор со стороны софтверного гиганта с целью устроить всемирный vendor lock-in и ухудшить переносимость DBшного кода, писанного на дотнете.

Иначе как объяснить?

пятница, 28 августа 2009 г.

Code Contracts - декларативное описание параметров вызова для методов .Net

"Contracts allow you to express preconditions, postconditions and object invariants in your code for runtime
checking, static analysis, and documentation. This document covers how to author them in your code, and
contains guidelines for using them e ectively with the provided tools.
All of the contract methods are static methods de ned in the Contract class which appears in the
System.Diagnostics .Contracts namespace."
Кажется, это уже было в Smalltalk. Теперь вот возвращается :-)


http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

http://research.microsoft.com/en-us/projects/contracts/userdoc.pdf

Code Contracts обещают встроить в C# 4.0 и MSVS 2010. Сейчас доступен в виде библиотеки

понедельник, 16 июня 2008 г.

Singularity OS

Вот ведь мимо пролетело - оказывается, MS выпустила в опенсоурс свою объектно-.net-базированнуб-исследовательскую операционную систему Singularity. Доступно это чудо в виде Singuilarity Research Development Kit на CodePlex: http://www.codeplex.com/singularity

Прочитать про саму ОС можно на Википедии: http://ru.wikipedia.org/wiki/Microsoft_Singularity

LinqToSql vs ADO.NET Entity Framework

(Задумчиво) Интересно, зачем Майкрософту целых два O/R маппера? Навскидку, LinqToSql выглядит младшим братом EF (который только-только вылезает из пеленок, и доступен пока в VS 2008 SP1 Beta).

Вот зачем нужно было их оба разрабатывать?...

И значит ли это, что с выходом EF старый LinqToSql потихоньку задвинут и не будут развивать?

воскресенье, 24 февраля 2008 г.

Office Fast Save или еще одно различие между умом пользователя и разработчика

Сегодня прочитал историю про то, как Microsoft в Office 2003 SP3 выключил т.н. режим "Fast Save".

Вкратце - начиная с 95 офиса в нем была функция быстрого сохранения файлов, которая позволяла очень быстро сохранять документы Word и Excel за счет того, что при записи документ целиком не перезаписывался, а в его конец просто добавлялись все правки, которые пользователь внес со времени последнего сохранения.

Программисты баз данных сразу же увидят сходство SQL серверами - там создается
файл transaction log, в котором так же записываются операции изменения данных в основной базе.


Красивое, элегантное решение. Но почему же его пришлось убрать из системы? Ответ очевиден - в файле сохранялась история его редактирования, которую потом можно вытащить на свет божий. И ваш клиент может, к примеру, узнать, что в коммерческом предложении которое вы ему прислали изначально стояла сумма в 3 раза меньше.

Могу себе представить, что пользователи действительно жаловались на производительность функции save и программисты придумали хороший трюк. Но оказалось, что лекарство было хуже болезни. Подозреваю, что какой-то пользователь однажды почувствовал это на своей шкуре, и это было довольно неприятно.

Вспоминается история про Гугль, который не хотел добавлять кнопку delete в своем почтовом клиенте gmail, потому что она "была не в концепции системы" и потому что "пользователям в нашей почте не нужно будет удалять письма"

И они долго не хотели понять, что иногда пользователи хотят удалить письмо если оно им по какой-то причине неприятно.

суббота, 19 января 2008 г.

Microsoft открывает исходные коды .Net Framework

Наконец-то свершилось - исходники .Net Framework опубликованы, отладка со вклбченными иходниками возможна в VS2008. Не нужно больше ковырять фреймворк .Net Refelector-ом :-)

Побробности можно прочитать в блоге ScottGu.

Исходники открыты под Read-Only Reference License. То есть смотреть можно, изучать можно, копировать и использовать нельзя. Это не очень настоящий OpenSource, но все-таки.

четверг, 17 января 2008 г.

Еще паники: Microsoft хочет получить патент на биометрический мониторинг

http://technology.timesonline.co.uk/tol/news/tech_and_web/article3193480.ece

По версии журнала "The Times": Microsoft подала патентную заявку на систему, которая будет предоставлять менеджерам биометрическую информацию об их подчиненных: давление, температура, выражение лица и т д. прелесть какая...

среда, 16 января 2008 г.

Microsoft Volta

В ряду JavaScript-компиляторов пополнение: технология Microsoft Volta (возможно, это новое имя Script#-а)

Поглядим-поглядим...

QuickStart: http://labs.live.com/volta/docs/quickstart.aspx

среда, 14 ноября 2007 г.

MVC Framework для ASP.NET - 1я демка

Вот собственно и первое описание грядущего MVC Framework. Выглядит очень похоже на MonoRail. Будем ждать первых бета-версий



http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx

понедельник, 22 октября 2007 г.

C++ Solution Upgrade: from Visual Studio 2003 to 2005

Хроника одного апгрейда.

Пришлось тут по долгу службы перевести один из проектов с Visual C++ 7.1 (2003) на VC++8 (2005). Памятуя, сколько времени я убил, когда четыре года назад переводил его с VC++ 6.0 на семерку, я заранее смирился с вечностью, полной невыносимых страданий...


Вообще я доволен - отпортировать получилось довольно быстро - проект объемом чуть больше 100K SLOC, десяток dll-ок и статических библиотек, а получилось перевести часов за 25. В прошлый раз с VC++6 недели три пришлось трахаться, потому что они там категорически наменяли в синтаксисе темплейтов.

Мини-лог по результатам конверсии

0. Когда открвыаешь solution от 7.1 новым Visual Studio, студия предлагает его отконвертить к новому формату. Конвертер, в отличии от asp.net (это отдельная печальная песня), вполне пристойно конвертит плюсовые проекты в формат "восьмерки" .

1. STLPort v4.x с VC++8 не работает. Оказалось, что http://stlport.com/ давно заброшен и разработка переехала на sourceforge (http://stlport.sourceforge.net/). Обновление, впрочем, прошло почти безболезненно - добавил пару include, да перекомпилировал гомерический шаблон _Not_within_traits прямо к себе в код, потому что шаблон теперь не public.

2. Компилятор C++ в 2005 ужесточил требования к синтаксису. От этого перестали работать конструкции вида:

for (int i =1;.....) {...}; doSomething(i)

декларацию i в данном сучае пришлось поднять над for:

int i;
for (i=1;.....) {...}; doSomething(i)

Еще теперь нельзя не указывать return type (раньше компилятор подставлял туда int). Больше они этоу мракобесную совместимость с plain C не поддерживают, и слава богу.

Из неприятных моментов - пришлось повозиться с ошибками вида "unresolved external symbol "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z)" - как оказалось, разные проекты у меня имели разные настройки /Zc, отчено в библиотеке функция описывалась с native wchar_t, а в зависимой - через const unsigned char *. Не компилировалось и орало.

4. RTL/ATL

Микрософторцы в VS 2005 сделали безопасные замены для некоторых функций STL с суффиксом _s и теперь, когда компилируешь старый проект, огребаешь неимоверное количество предупреждений на эту тему. Лечил просто - добавил define _CRT_SECURE_NO_DEPRECATE и на безопасные методы переходить не стал -- не был готов перетестировать весь код да и нет пока желания использовать микросовтовскую нестандартовщину.

wcsstr теперь возвращает не wchar_t *, а const wchar_t * так что пришлось подправить код, который сохранял результаты этой функции.


Вроде, все, собралось, запыхтело, не падает :-) Отдал на тестирование.

Ссылки по теме
http://msdn2.microsoft.com/en-us/library/ms177253(VS.80).aspx
http://msdn.microsoft.com/chats/transcripts/vstudio/vstudio_061704.aspx
http://msdn2.microsoft.com/en-us/library/dh8che7s(VS.80).aspx

понедельник, 15 октября 2007 г.

MVC Framework для ASP.NET

Чтобы не забылось - рассказ на час про Model-View-Controller Framework, который делают для ASP.NET и VS. Обещают в этом году первую бету.

http://www.hanselman.com/blog/ScottGuMVCPresentationAndScottHaScreencastFromALTNETConference.aspx

четверг, 4 октября 2007 г.

Радостная новость - Microsoft будет отдавать исходники некоторых своих сборок .Net Framework 3.5. И можно будет отлаживаться прямо внутри них!
"Today I'm excited to announce that we'll be providing
this with the .NET 3.5 and VS 2008 release later this year.
We'll begin by
offering the source code (with source file comments included) for the .NET
Base Class Libraries (System, System.IO, System.Collections,
System.Configuration, System.Threading, System.Net, System.Security,
System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms
(System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF
(System.Windows). We'll then be adding more libraries in the months ahead
(including WCF, Workflow, and LINQ). The source code will be released
under the
Microsoft Reference License (MS-RL)."


http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx

пятница, 21 сентября 2007 г.

Отладка, UserDump и Debugging Tools for Windows

См также

Доктор, у меня все болит

Как объяснить? Как описать?
Даже всезнание отказывает…
Вернор Виндж, «Пламя над бездной»
Если вы не разу не встречались с ситуацией, когда приложение отлично работает на машине разработчика, но необъяснимо глючит у заказчика – вы очень везучий программист. Или вы не программист, а кто-то другой.
Обычно ситуации такие возникают нечасто, но каждая из них до боли запоминается, и вспоминаешь о ней с содроганием еще спустя месяцы. Ну еще бы – заказчики звонят, менеджеры матерятся, команда сидит сутками на работе и пытается спасти положение. Если проблему удается решить, чувствуешь себя чуть ли не Кутузовым, выигравшим очередное сражение. Если же нет…
Я сейчас расскажу о том, как можно облегчить себе жизнь в ситуации, когда ASP.NET приложение ведет себя невесть как на production машине, а вы не можете понять, почему так происходит.
Обычно симптомы простые – очень злые заказчики выходят на связь и говорят, что «сайт не работает». Когда начинаешь разбираться – выясняется, что приложение действительно время от времени недоступно и веб-сервер радостно кидает ошибки вида “502 Service Unavailable”. Для клиента это может выглядеть как надпись «Page cannot be found» в браузере.

После такого дела, естественно, захочется посмотреть, что же там происходит на сервере. В этом поможет приложение Process Explorer (в принципе, и стандартный Task Manager сгодится, но он похуже).
Process Explorer и другие чудо-утилиты – File Monitor, Registry Monitor, Process Monitor etc – написал великий мастер Марк Руссинович. Все это хозяйство можно скачать с сайта Microsoft вот по такому адресу: http://www.microsoft.com/technet/sysinternals.
Когда запустите Process Explorer, посмотрите информацию по процессу w3wp.exe
W3WP – это такой процесс, в котором Internet Information Server 6 по умолчанию запускает приложения ASP и ASP.NET. Точнее – те приложения, которые вы сгруппируете в одном AppPool. Прочитать про w3wp можно тут: http://msdn2.microsoft.com/en-us/library/ms524990.aspx
Вот например, как может вести себя w3wp:

В какой-то момент процессор на сервере начал потреблять 100% CPU. На картинке мы видим длительную 50%-ю загрузку, потому что на сервере установлен 2хядерный процессор и только половина ресурсов процессора была потрачена. Справа на картинке видно, как какой-то другой запрос скушал остатки процессорной мощности секунд на 10.
Еще бывает очень полезно настроить логгинг Performance Counters – можно много узнать о личной жизни сервера. Вот здесь (http://msdn2.microsoft.com/en-us/library/fxk122b4(vs.71).aspx) рассказывается про каунтеры, полезные для анализа ASP.NET приложений.
Дальше нам нужно понять – что же так грузит процессор? Раз дело в w3wp, значит, это наше приложение (или не наше, но здесь для простоты давайте считать, что только ваше приложение сидит в данном AppPool-е)
Дело может осложниться тем, что проблема возникает только на рабочем сервере, где любая отладка невозможна, и нигде больше проблему повторить не удается. Значит, надо как-то анализировать «нутро» процесса, его помыслы и деяния. Причем, не мешая настоящим, живым пользователям пользоваться сайтом.
Знаю, знаю, что на production отлаживаться нельзя. И доступа туда разработчики иметь не должны. Но если вы работаете не в банке, а скорость реагирования на проблему важнее бюрократии и безопасности – доступ вам скорее всего дадут. Впрочем, снять дамп процесса можно научить и сисадминов, причем без проблем. Сисадмины обычно в курсе, что такое core dumped, и с радостью помогают в создании таких «кор» другим.
В принципе, Process Explorer показывает, какие у процесса есть потоки и чем они заняты (даже Stack Trace делает и отладочные символы понимает). Проблема только в том, что Process Explorer не показывает .Net-овский управляемый стек.
Вот, например, попробуйте догадаться, чем сейчас занимается .Net приложение:

Раз Process Explorer нам не помощник, значит, нужен инструмент, который сделает трассировку .net-стека по всем потокам процесса. И такой инструмент есть – называется он Debugging Tools for Windows и совершенно бесплатно доступен на сайте Microsoft.
WinDbg в составе Debugging Tools – это, наверное, вообще самый мощный отладчик для Windows. Он умеет отлаживать все – от драйверов до .Net приложений. И что немаловажно, он умеет анализировать дампы процессов, в том числе и дампы, которые создали на другой машине. И .Net он тоже понимает. Скачать Debugging Tools можно по этому адресу: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Пользуемся User Dump

Но мы не можем отлаживаться на production! Поэтому мы сделаем дамп процесса, скопируем его к себе и будем исследовать при помощи WinDbg из поставки Debugging Tools.
А дамп процесса мы сделаем при помощи утилиты UserDump, которую качаем опять же с сайте Microsoft: http://www.microsoft.com/downloads/details.aspx?FamilyID=E089CA41-6A87-40C8-BF69-28AC08570B7E&amp;displaylang=en&displaylang=en
Инсталлировать ничего не нужно, нужно только подкараулить наш процесс, когда он начнет вести себя плохо, и сделать дамп, указав userdump-у ID процесса:

На время работы утилиты процесс блокируется и никакие запросы к сайту не работают. К счастью, дамп создается быстро – меньше минуты. Может и за 10 секунд управиться.
Созданный .dmp файл архивируем и копируем затем на девелоперскую машину. Файл будет размером с рабочий набор процесса – то есть не меньше 30 мегабайт а скорее всего раз в 10 больше. Впрочем, сжимается дамп-файл неплохо.

Ставим Debugging Tools for Windows

Тут даже рассказывать-то особенно нечего – скачиваем Debugging Tools и устанавливаем к себе на компьютер.
Затем запускаем WinDbg и открываем наш дамп:

Не пугайтесь только внешнего вида WinDbg – он кажется каким-то выходцем из прошлого. Примерно так наверное выглядит робот-марсоход изнутри. Какие-то приборы, циферки, буковки … Короче, не программа, а мечта.

Анализируем дамп процесса

Когда дамп процесса загрузится, вы увидите примерно следующее:

Красным выделена команда, которую нужно будет набрать в консоли дебаггера. Дело в том, что функции отладки .net приложений в WinDbg выполнены в виде плагина, который и загружается командой “.load”.
Существует два вида библиотеки sos.dll (sos – это сокращение от почему-то ”Son of Strike”). Одна версия подходит для managed программ, работающих под .Net 1.0 и 1.1, а вторая – для .Net 2.0
Для .Net 1.x sos.dll лежит в каталоге %DEBUGGING_TOOLS_HOME%\clr10.
Версия для .Net 2.0 поставляется вместе с самим .Net Framework. По необъяснимым причинам, она беднее по функционалу, чем sos.dll для 1.x, но тоже ничего.
Загругить ее можно так:
“.load C:\<WINDOWS_HOME>\Microsoft.NET\ Framework\v2.0.50727\sos.dll”
После того, как мы загрузили sos.dll, в отладчик добавилось множество полезных команд. Все эти команды начинаются со знака ”!”.
Полный список команд можно посмотреть, набрав «!help» в консоли отладчика. Команд там страницы на две, и с помощью них можно узнать много всего о .net – приложении.

Вот список команд для sos.dll от .net 1.x. Впечатляет?
Смысл части команд понятен из названия, а чтобы узнать подробности , наберите в консоли «!help <ИМЯ КОМАНДЫ>». Советую посмотреть справку по всем командам – многое потом может пригодиться.
Вспоминаем про нашу проблему – 100% загруженность CPU.
Смотрим список managed потоков – команда «!Threads»

Помимо кучи разных цифр здесь видно, что в процессе, который мы задампили, выполнялось 12 потоков. Пользы от этого нам сейчас немного, но для цельного понимания картины пригодится.
Теперь нам не остается ничего, кроме как просмотреть трассировку всех стеков для всех потоков с помощью команды «!EEStack»

EEStack выводит уйму информации: ссылки на стековые фреймы, адреса возврата и самое главное – символические имена для каждого стекового фрейма.
По-хорошему, при отладке не помешают бы еще и PDB файлы Windows – отладочные символы от основных DLL. Их можно получить, подключившись в Microsoft Symbol Server. Как - смотрим на сайте Microsoft: http://msdn2.microsoft.com/en-us/library/b8ttk8zy.aspx
Но поскольку мы не собираемся отлаживаться на уровне ассемблера откомпилированный JIT-компилятором код, в дампах стека нас будут интересовать только символы, начинающиеся с “MethodDesc“. Это, собственно и есть названя .net-овских классов и методов.
На следующей картинке можно получить кучу полезной информации, например вот тут видно, какую страницу рендерил ASPNET в этом потоке в момент, когда вызвали userdump.exe

Явно это был SlideViewer.aspx, что бы это название не значило.
А дальше нужно всего лишь внимательно просмотреть стеки от всех потоков и понять, где же тот самый поток, который загрузил процессор. Ну а еще дальше – сущие пустяки: успокоить заказчика, починить баг, написать тесты, выкатить обновление программы. После всего, через что мы только что прошли, это уже мелочи…
Понятное дело, что WinDbg вместе с sos.dll умеют в сотни раз больше, чем я тут описал. Например, можно посмотреть, какие объекты лежат в куче, как они распределены по поколениям. Можно посмотреть на внутренние структуры ASP.NET, на синхротаблицы объектов и многое другое…
К чему я клоню – встроенный отладчик Visual Studio по сравнению с WinDbg – просто неумелое дитя. Хотя – тсс, никому не говорите – в Visual Studio при помощи окна Immediate тоже можно загружать и использовать sos.dll.. Но, хотя дамп процесса проанализировать в ней можно, интеграции с sos.dll у Visual Studio нет, да и среда не столь заточена под ручную работу.
На заметку: Чтобы открыть дамп процесса в Visual Studio, нужно сказать File->Open Project и указать тип проекта как "Dump File". После этого дамп-файл откроется в IDE и можно будеть зайти в режим отладки (Debug this Instance), в котором доступна часть функциональности WinDbg на уровне пользовательского интерфейса (Окна Stack Trace, Threads, Memory и др.)
Удачи в отладке!
Версия 1.1
Ю.Скалецкий, 21 сентября 2007
http://yuryskaletskiy.blogspot.com/

История:
23 sep - версия 1.1: Оказывается, в Visual Studio тоже есть возможность анализировать дампы.