Архив

Записи с меткой «SOS»

Silverlight Отладка с помощью WinDbg и SOS

19 декабря 2008 Комментариев нет

Введение

В предыдущем посте Silverlight Отладка с Visual Studio, я показал, что Visual Studio является мощным и самым удобным инструментом для отладки управляемых приложений. Но для некоторых сложных сценариев отладки, такие как утечки памяти, тупик, беглых процесс / нить, отладки ядра, а также расширенные удаленных / аварии / UI отладки и т.д., WinDbg (или CDB, NTSD, кд), как правило, предпочтительнее, если не единственный вариант.

Средства отладки для Windows,

Обзор

WinDbg является частью средств отладки для Windows, пакета:

image_thumb5

Хотя WinDbg является графический интерфейс программы, он в основном используется как отладчик командной строки, как (и часто с) кд, ЦКБ и NTSD, и один и тот же двигатель отладки и команды. Это супер мощный и расширяемый, особенно хорошо подходит для системы / низкоуровневой отладки драйверов, как и других компонентов операционной системы. Она требует хорошего знания аппаратных средств, операционной системы и компилятора, чтобы получить максимальную отдачу от набора инструментов. Это большой (или совершенной, я должен сказать :-) для родных отладки, с его обширной и расширяемой команды и графического пользовательского интерфейса. Управляемая поддержка отладки с помощью расширенных функций отладки SOS, далеко не так хорошо, как родной отладки, но существует огромное значение в возможности делать комплексной отладки всей управляемых и собственных границ, так и для Silverlight, это единственный инструмент, который я отдаю себе отчет в , который может загружать SOS и делать комплексной отладки.

Команды

WinDbg / CDB / NTSD / кд были вокруг в течение долгого времени, поэтому они очень хорошо документированы. Это рекомендуется, что вы читали о Средства отладки для Windows, на microsoft.com и MSDN . Здесь я только дать краткий обзор своей команды, чтобы дать вам почувствовать и быстрой справки. Все команды идут с время выполнения помощь (через |?. Помощь |! Помощь [<cmd>] см. ниже), так что обзор, как правило, достаточно, чтобы получить работу.

WinDbg имеет три набора команд:

Стандартные команды

Прежде всего:

  • В * команд, чтобы установить / очистить / список / включить / отключить точки останова на адрес или доступа
  • D * Команды для исследования памяти (стек / кучу, местных / глобальных переменных и параметров), E * команду, чтобы изменить память, и S * для поиска памяти
  • К * Команды для изучения стека вызовов
  • P, T, G * команды для контроля исполнения

ниже? Команда выход отличный обзор и частые ссылки для людей, использующих WinDbg / CDB / NTSD / Ы:

0:006>?

Открытое debugger.chm для полной документации отладчик

B [C | D | E] [<bps>] - очистить / отключить / включить точку останова (ы)
BL - список точек останова
BA <access> <size> <addr> - останова, установленной процессор
ВР <address> - набор мягкой останова
D [тип] [<range>] - дамп памяти
DT [-п | у] [[MOD] имя!] [[-П | у] поля]
[Адрес] [-л список] [[] | с | я | а | г [#] | V] - дамп использованием информации о типе
DV [<name>] - дамп локальные переменные
E [тип] <address> [<values>] - ввести значения памяти
G [H | N] [= <address> [<address> ...]] - перейти
К <count> - StackTrace
КП <count> - StackTrace с исходными аргументами
Л. М. [к | л | и | V] - список модулей
Л. Н. <expr> - список ближайших символов
Р [= <addr>] [<value>] - перешагнуть через
Q - выйти
R [[<reg> [= <expr>]]] - просмотр или набор регистров
S [<opts>] <range> <values> - поиск памяти
SX [{е | д | я | п} [-с "cmd1"] [-С2 "cmd2"] [-час] {Исключение | события | *}] - фильтр событий
Т [= <address>] [<expr>] - след в
U [<range>] - дизассемблировать
версия - шоу отлаживаемого и отладчик версии
X [<* | Модуль >!]<*| символ> - символы зрения
? <expr> - дисплей выражения
? <expr> - дисплей C + + выражение
$ <<filename> - Принимать ввод из командного файла

Жмем Enter ...

<expr> унарные Ops: + - не горе DWO qwo пои привет низкой
двоичный Ops: + - * / мод (%) и (&) XOR (^) или (|)
сравнения: == (=) <> =
Операнды: число в текущем счисления, государственного символа, <reg>
<type>: б (байт), W (слово), г [с] (двойное [с символами]),
(ASCII), с (DWORD и Char), и (Unicode), л (список)
е (флоат), D (двухместный), с | S (ASCII / Unicode строка)
д (quadword)
<pattern>: [(п | <dll-name>)!] <var-name> (<var-name> может включать в себя и *?)
<range>: <address> <address>
: <address> L <count>

Пользователь в режиме опций:
~ - Нити состояния списка
~ # Ы - резьба по умолчанию набор
| - Процессы состояния списка
| # Ы - совокупность процессов по умолчанию

x86 вариантов:
DG <selector> - дамп селектора
<reg>: [е] топор, [е] Ьх, [е] сх, [е] ах, [е] си, [е] ди, [е] б.п., [е] зр [е] р [ е] П,
AL, AH, BL, BH, CL, CH, DL, DH, CS, DS, ES, FS, GS, сс
dr0, DR1, DR2, DR3, DR6, DR7
fpcw, fpsw, fptw, st0-ST7, mm0-mm7
xmm0-xmm7
<flag>: IOPL, в, д, если, тс, SF, ZF, AF, PF, ср
<addr>: # <16-битной защиты в режиме [сегментов:] адрес>,
И <V86-mode [seg:]address>

Открытое debugger.chm для полной документации отладчик

Мета команд

Те, начинаются с точки, в основном, для продвинутых отладки. Некоторые важные команды, которые вы должны знать:

  • . Symfix и. Sympath для использования сервера символов
  • . Srcfix и. Srcpath для использования исходного сервера
  • . Нагрузки. Loadby. Выгрузки. Цепочке. Setdll для управления расширениями отладки
  • . Сервера. Пульт дистанционного управления для удаленной отладки

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

0:006>. Помощи
. команды:
. Отказаться - отказаться от текущего процесса
. Allow_exec_cmds [0 | 1] - команды управления исполнения
. Allow_image_mapping [0 | 1] - управление по запросу файла образа отображения
. Apply_dbp [<options>] - добавить текущую точку останова данным государством
зарегистрировать контекст
. ASM [<options>] - набор вариантов разборки
. Т-[<options>] - ясно разборки вариантов
. Приложить <proc> - приложить к <proc> при следующем выполнении
. Блок {} <commands> - кронштейны набор команд для выполнения вложенных
. Bpsync [0 | 1] - особое поведение точки останова для многопоточных debuggees
. Брейк - вырваться из цикла ограждающих
. Взлома - ворваться в КД
. Кэш [<options>] - виртуальный контроль кэш-памяти
. Вызов Fn (<arg1>, <arg2>, ...) - запуск функции в отлаживаемом
. Поймать {} <commands> - поймать сбои в командах
. Цепочке - список текущих расширений
. Childdbg <0 | 1> - включить дочерний процесс отладки или выключить
. Клиентам - список активных клиентов
. CloseHandle [<options>] [<handle>] - закрыть данную ручку
. Продолжать - продолжать ограждающих петля
. Copysym [<options>] <path> - копии текущих файлов символ и каталог
. Создавать <command line> - создать новый процесс
. Createdir [<options>] [<path>] - управление вариантов процесса создания
. CXR <address> - дамп контекста записи на указанный адрес
к * после этого дает CXR стека
. Dbgdbg - присоединить отладчик к текущим отладчиком
. Debug_sw_wow [0 | 1] - разрешить взаимодействие с программной эмуляции WOW
. Отделить - отсоединиться от текущего процесса / свалку
. Dml_file <file> - выход DML контент из файла
. Dml_flow <start> <addr> - показать основной поток блок кода
. Dml_start [<options>] - судоходные обзор отладчик деятельности
. Делать <commands> {} (<cond>) - выполнить <commands> до <cond> равна нулю
. Драйверов - Эта команда была удалена - использовать 'лм' или перезагрузка-л).
. Свалки [<options>] <filename> - создать файл дампа на хост-системе
. Dvalloc [<options>] <bytes> - VirtualAlloc памяти отлаживаемого
. Dvfree [<options>] <offset> <bytes> - VirtualFree памяти отлаживаемого
. Эхо ["<string>" | <string>] - эхо строки
. Echotime - выходной отладчика время
. Echotimestamps [0 | 1] - переключить выход метку на события
. Ecxr - дамп контексте рекорд для текущего исключения
. Effmach [<machine>] - изменить текущий тип машины
. Еще {} <commands> - если / то / иначе условное выполнение
. ELSIF (<cond>) {<commands>} [<else clauses>] - если / то / иначе условный
выполнение
. Enable_long_status [0 | 1] - свалка LONG типов по умолчанию базу
. Enable_unicode [0 | 1] - дамп массива USHORT / указатели и Юникод
. Endsrv <id> - отключение данного двигателя серверу
. Endpsrv - привести к удаленному серверу текущей сессии, чтобы выйти
. Enumtag - перечислить доступные меткой данных
. Event_code - отображать кэшированные инструкции события
. EventLog - отображать журнал последних событий
. События - отображения и выбора доступных событий
. Eventstr - дисплей любом случае строки зарегистрирован отлаживаемого
. Exepath [<dir> [;...]] - установить путь поиска исполняемых
. Exepath + [<dir> [;...]] - добавить путь поиска исполняемых
. Выражение - контроль выражений
. Exptr <address> -.. Делать EXR и CXR для EXCEPTION_POINTERS
. EXR <address> - дамп исключением записи на указанный адрес
. Extmatch [<opts>] <pattern> - отображать все расширения соответствует шаблону
. Extpath <opts> [<dir> [;...]] - расширение набора путь поиска
. Extpath + <opts> [<dir> [;...]] - добавлять расширение пути поиска
. F + - набор текущего кадра стека вызывающий текущий кадр
. F-- установить текущий фрейм стека вызываемой из текущего кадра
. Волокна <address> - задает контекст волокна по адресу
сбрасывает контексте, если адрес не указан
. Fiximports <pattern> - попытки связать импорта для изображений
. Fnent <address> - дамп функцию входа для данного кода адреса
. Fnret <fnaddr> [<retval>] - отображения форматированного возвращаемого значения
. Для (<init>; <cond>; <step>) {} <commands> - выполнить <commands> и
<step> до <cond> является
нулевой
. Force_radix_output [0 | 1] - свалка целых типов по умолчанию базу
. Force_system_init [<options>] - силе до системы для инициализации если это возможно
. Force_tb - насильственно позволит филиала трассировки
. Еогеасп [выбирает] (<alias> {<tcmds>}) {} <ecmds> - выполнить <ecmds> для
каждой лексемы в
выход <tcmds>
. FPO <options> - контроль переопределить FPO информации
. Рамы [<frame>] - установить текущий кадр стека для местных жителей
. Форматах <expr> - выводит результат выражения в различных форматах
. Помощь [<options>] - показать эту справку
. Holdmem <options> [диапазон] - провести и сравнить данные памяти
. Если (<cond>) {<commands>} [<else clauses>] - если / то / иначе условный
выполнение
. Ignore_missing_pages [0 | 1] - управление ядра резюме свалки отсутствует
Сообщение страницы ошибок
. Imgscan <options> - сканирование памяти для изображений, PE
. Jdinfo <jdi_addr> - интерпретировать информацию AeDebug
. Kframes <count> - установить по умолчанию глубина стека
. Убить - убей текущего процесса
. Lastevent - отображение последнего события, которые произошли
. Отпуске - выход ограждающих поймать.
. Линий - переключить загрузку символ линии
. Нагрузки <name> - добавить это расширение DLL для расширения цепочки
. Loadby <name> <mod> - добавить расширение DLL в модуль
каталог расширения цепочки
. Локали [<locale>] - набор текущей локали
. Лог-файл - показывает журнал статус
. Logopen [<file>] - открыть новый файл журнала
. Logappend [<file>] - добавить в файл журнала
. Logclose - закрыть файл журнала
. Netsyms [0 | 1] - разрешить / запретить чистый символ пути
. Netuse [<options>] - управление чистых подключений
. NoShell - отключение команд оболочки
. Noversion - отключить проверку версии расширения
. Ofilter <pattern> - выходной фильтр отлаживаемого против заданному шаблону
. Ocommand <prefix> - лечить выход с данным префиксом, как команда
. Opendump <file> - открыть файл дампа
. Outmask <mask> - бит в текущую маску выходной
. Outmask-<mask> - четкие биты в текущую маску выходной
. Pcmd [<options>] - контроль за командную строку
. Поп [<options>] - поп-государство
. Prefer_dml [0 | 1] - управление DML режим по умолчанию
. Printf "<format>", <args…> - форматированный вывод
. Процесс [<address>] - устанавливает неявный процесс
сбрасывает умолчанию, если не указан адрес
. Prompt_allow [<options>] - контролировать то, что информация может быть отображена
в командной строке
. Нажмите [<options>] - подтолкнуть государство
. Quit_lock [<options>] - замки сессии против неожиданного выхода
. Readmem <file> <range> - читайте сырья памяти из файла
. Record_branches [0 | 1] - управление записи процессора ветвлений
. Перезагрузки [<image.ext> [= <address>, <size>]] - перезагрузка символов
. Перезагрузки - запрос перезапустить сессию
. Удаленного <pipename> - начало remote.exe серверу
. Безопасным [0 | 1] - запретить операции опасны для принимающей
. Send_file <options> - отправлять файлы на удаленном сервере
. Сервера <options> - запустить сервер двигателя
. Серверов - список активных серверов удаленного взаимодействия
. Setdll <name> - отладчик будет искать расширения в этой DLL первый
. Оболочку [<command>] - выполнять команды оболочки
. Show_read_failures [<opts>] - управление дополнительный выход отказ читать
. Show_sym_failures [<opts>] - управление дополнительный выход неудачу символ
. Сна <milliseconds> - отладчик спит заданной длительности
полезно для обеспечения доступа к машине, которая в
на сломанной в NTSD-й
. Srcfix [<path extra>] - зафиксировать источник путь поиска
. Srcfix + [<path extra>] - добавить фиксированный путь поиска источников
. Srcnoisy [0 | 1] - управление подробный источник загрузки выходной
. Srcpath [<dir> [;...]] - установить источник путь поиска
. Srcpath + [<dir> [;...]] - добавить источник путь поиска
. Step_filter [<opts>] ["<pattern> [; <pattern> ...]"] - узоры набор символов
пропустить при активизации
. Symfix [<localsym>] - символ исправить путь поиска
. Symfix + [<localsym>] - добавить фиксированный путь поиска символа
. Symopt <flags> - опции набора символов
. Symopt + <flags> - опции набора символов
. Symopt-<flags> - четкие варианты символом
. Sympath [<dir> [;...]] - набор символов пути поиска
. Sympath + [<dir> [;...]] - добавлять символ пути поиска
. Нить [<address>] - задает контекст потока в адрес
сбрасывает контекст по умолчанию, если не указан адрес
. Время - показывает информацию времени сеанса
. TTIME - показывает информацию нить времени
. TList - список запущенных процессов
. Typeopt <flags> - установить / очистить варианты типа
. Разгрузить <name> - удалить это расширение DLL из списка расширение библиотеки DLL
. Unloadall - удалить все библиотеки DLL расширения из списка расширений библиотеки DLL
. Разбудить - проснуться sleep'ing отладчик.
. Время (<cond>) {} <commands> - выполнить <commands> в то время как <cond> не равна нулю
. Writemem <file> <range> - пишите сырья памяти в файл

Используйте ". Чч <command>" или открытого debugger.chm в каталоге отладчиков, чтобы получить
подробную документацию по команде.

Расширение команды

Те, начинаются с!, Как правило, для конкретной области, как SOS расширение команды по отладке управляемого кода. Вы можете использовать! <ext>. Поможет список команд расширения, нравится! Exts.help. Для продвинутых отладки системы, как обнаружение утечек памяти, тупик и т.д., вы должны быть хорошо знакомы с теми, расширение команд.

СОС

Обзор

SOS является аббревиатурой Сын Strike (не спрашивайте, почему), расширение для отладки по отладке управляемого кода. Я считаю, что было изобретено CLR команды CLR отладки, так что была вокруг в течение долгого времени, и Есть много хорошей информации в Интернете. Некоторые Рекомендуемая литература:

Каждая версия CLR имеет собственную SOS (NET Framework 3.5 до сих пор использует CLR 2.0 и Silverlight имеет свои CLR.):

Справочник C: \ Program Files \ средств отладки для Windows \ clr10
09/19/2007 7:01 вечера 948784 SOS.dll
1 файл (ы) 948 784 байт

Справочник C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0
10/05/2008 2:16 утра 495424 SOS.dll
1 файл (ы) 495 424 байт

Справочник C: \ Windows \ Microsoft.NET \ Framework \ v1.1.4322
07/15/2004 12:35 утра 319488 SOS.dll
1 файл (ы) 319 488 байт

Справочник C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727
07/27/2008 10:03 утра 392184 SOS.dll
1 файл (ы) 392 184 байт


Команды

SOS время выполнения Помочь так велико, что вы почти не нужны никакие другие док, кроме нескольких проб и ошибок, и некоторые разочарования :-)

0:016>! Помочь
---------------------------
SOS является DLL отладчик расширения предназначены для оказания помощи в отладке управляемого
программ. Функции перечислены по категориям, то примерно в порядке
значение. Ярлык имена для популярных функций перечислены в скобках.
Типа "! Поможет <functionname>" для детальной информации по этой функции.

Объект экспертизы инспекции кода и стека
---------- ----------
DumpObj (делать) Темы
DumpArray (да) CLRStack
DumpStackObjects (DSO) IP2MD
DumpHeap U
DumpVC DumpStack
GCRoot EEStack
ObjSize GCInfo
FinalizeQueue EHInfo
PrintException (ре) COMState
TraverseHeap BPMD

Экспертиза CLR структур данных диагностических утилит
---------- ----------
DumpDomain VerifyHeap
EEHeap VerifyObj
Name2EE FindRoots
SyncBlk HeapStat
DumpMT GCWhere
DumpClass ListNearObj (ЛНО)
DumpMD GCHandles
Token2EE GCHandleLeaks
EEVersion FinalizeQueue (Fq)
DumpModule FindAppDomain
ThreadPool SaveModule
DumpAssembly PROCINFO
DumpSigElem StopOnException (SOE)
DumpRuntimeTypes DumpLog
DumpSig VMMap
RCWCleanupList VMStat
DumpIL MinidumpMode
AnalyzeOOM (ао)

Изучение истории GC Другие
---------- ----------
HistInit FAQ
HistStats
HistRoot
HistObj
HistObjFind
HistClear

Демонстрация Пример отладочных

Я буду использовать тот же самый простейший Silverlight приложения в предыдущем посте ( Silverlight Отладка С помощью Visual Studio ), чтобы продемонстрировать WinDbg отладки SOS:

image_thumb

Вот журнал отладки с моей аннотации (начинаются с / /):

/ / Создать символ путь для использования сервера символов
0:013>. Sympath
Символ путь поиска: <empty>
0:013> symfix C:. \ Users \ ningz \ AppData \ Local \ Temp \ Symbols
0:013>. Sympath
Символ путь поиска: SRV * C: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols \ * \ символы \ символы

/ / Добавляем PDB путь для применения отлаживается
0:013> sympath +. "C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1 \ Bin \ Debug"
Символ путь поиска: SRV * C: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols *
http://msdl.microsoft.com/download/symbols;
C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1 Bin \ \ Debug

/ / Перезагрузить все символы
0:013>. Перезагрузки
Перезагрузка текущей модулей

/ / Создать источник путь для использования исходного сервера
0:013>. Srcpath
Источник путь поиска: <empty>
0:013>. Srcfix
Источник путь поиска: SRV *
0:013> srcpath +. "C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1"
Источник путь поиска: SRV *, C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1

/ / Загружаем SOS. Пожалуйста, обратите внимание:
/ / 1. кажется mscorwks заменяется CoreCLR в Silverlight
/ / 2. . вместо loadby, вы также можете использовать нагрузку "C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ SOS.dll".
0:013>. Loadby Сос CoreCLR
Loaded C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ Сос расширение DLL

/ / Установить точки останова для кнопки обработчик события нажатия
0:013>! Bpmd SilverlightApplication1 SilverlightApplication1.Page.Button_Click
Найдено 1 методы ...
MethodDesc = 03983a30
Добавление точки останова в ожидании ...
0:013> бл
0 е 0428215b 0001 (0001) 0 :****
0:013> г
ModLoad: 70800000 7080c000 C: Windowssystem32dwmapi.dll

/ / Нажать на кнопку и ворваться в WinDbg
Breakpoint 0 хит
*** ВНИМАНИЕ: Невозможно проверить контрольную сумму для SilverlightApplication1.dll
! SilverlightApplication1 Button_Click:
04850398 55 PUSH EBP
Комплексная по отладке управляемого кода не поддерживает перечисление локальных переменных.
Смотрите http://dbg/managed.htm для более подробной информации.
Управляемые обработку кадра не удалось, HRESULT 0x80004005

/ / Сравнить! Потоков и ~ * выходной
0:005>! Темы / / список управляемых потоков только
-Нитей: 3
UnstartedThread: 0
BackgroundThread: 3
PendingThread: 0
DeadThread: 0
Хостинг Время: есть
PreEmptive Alloc GC Блокировка
ID OSID ThreadOBJ государства GC контексте домена графа APT Исключение
5 1 1b08 043576e0 220 инвалидов 04f9f214: 04f9ffe8 06f529d8 0 STA
9 2 928 043689c8 B220 Включено 00000000:00000000 0433c738 0 MTA (Finalizer)
10 3 1e8c 06f509d0 1220 Включено 00000000:00000000 0433c738 0 Укк
0:005> ~ * / / список все темы
0 ID: 162c.1a28 Suspend: 1 Теб: 7ffde000 незамерзшей
Начало:! Iexplore wWinMainCRTStartup (00a52d79)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
2 ID: 162c.1020 Suspend: 1 Теб: 7ffdc000 незамерзшей
Начало: OLE32 CRpcThreadCache:: RpcWorkerThreadEntry (76dfe0cc)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
3 ID: 162c.1e00 Suspend: 1 Теб: 7ffda000 незамерзшей
Начало:! NTDLL TppWaiterpThread (778ab61b)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
4 ID: 162c.1f00 Suspend: 1 Теб: 7ffd9000 незамерзшей
Начало:! MSVCRT _endthreadex +0 x6f (76162da8)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
. 5 Id: 162c.1b08 Suspend: 1 Теб: 7ffd8000 незамерзшей
Начало:! IEFRAME CTabWindow:: _TabWindowThreadProc (6c163fdb)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
7 Id: 162c.170 Suspend: 1 Теб: 7ffd6000 незамерзшей
Начало:! Npctrl CXcpDispatcher:: DispatcherTimerCallback (6a6d16f4)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
8 Id: 162c.1cd0 Suspend: 1 Теб: 7ffd5000 незамерзшей
Начало: CoreCLR DebuggerRCThread:: ThreadProcStatic (640eb5cd)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
9 Id: 162c.928 Suspend: 1 Теб: 7ffd4000 незамерзшей
Начало: CoreCLR Thread:: intermediateThreadProc (63fb8e4f)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
10 Id: 162c.1e8c Suspend: 1 Теб: 7ffd3000 незамерзшей
Начало: CoreCLR Thread:: intermediateThreadProc (63fb8e4f)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
11 Id: 162c.1fac Suspend: 1 Теб: 7ffaf000 незамерзшей
Начало:! Agcore CMulticoreTaskScheduler:: WorkerThread (660547de)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
12 Id: 162c.1b78 Suspend: 1 Теб: 7ffae000 незамерзшей
Начало:! Agcore CMulticoreTaskScheduler:: WorkerThread (660547de)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
13 Id: 162c.1d18 Suspend: 1 Теб: 7ffdb000 незамерзшей
Начало:! NTDLL RtlUserThreadStart (778c9a78)
Приоритет: 0 Класс приоритета: 32 Affinity: 3
Управляемые обработку кадра не удалось, HRESULT 0x80004005
Комплексная по отладке управляемого кода не поддерживает перечисление локальных переменных.
Смотрите http://dbg/managed.htm для более подробной информации.

/ / Сравнить! Clrstack и к выходной
0:005>! Clrstack-р / / список управляемых кадров стека только
OS Тема Id: 0x1b08 (5)
ESP EIP
0450f850 04800398 SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
ПАРАМЕТРЫ:
это (<CLR reg>) = 0x04f59c78
Отправитель (<CLR reg>) = 0x04f5b948
е (0x0450f854) = 0x04f9f1f0

0450f858 048cde0d System.Windows.Controls.Primitives.ButtonBase.OnClick ()
ПАРАМЕТРЫ:
это (0x0450f864) = 0x04f5b948

0450f870 048cdd10 System.Windows.Controls.Button.OnClick ()
ПАРАМЕТРЫ:
это = <No data>

0450f880 048cdc3d
ПАРАМЕТРЫ:
это (0x0450f884) = 0x04f5b948
е (0x0450f880) = 0x04f9f188

0450f890 048cdba1 System.Windows.Controls.Control.OnMouseLeftButtonUp (System.Windows.Controls.Control, System.EventArgs)
ПАРАМЕТРЫ:
Ctrl = <No data>
е = <No data>

0450f8a0 0483a0e7 MS.Internal.JoltHelper.FireEvent (IntPtr, IntPtr, Int32, System.String)
ПАРАМЕТРЫ:
unmanagedObj (0x0450f8f8) = 0x04355c48
unmanagedObjArgs (0x0450f8f4) = 0x0707be00
argsTypeIndex (0x0450f928) = 0x000000a9
EventName (0x0450f924) = 0x04f9f16c

0450fa74 63ef17b0 [GCFrame: 0450fa74]
0450fb30 63ef17b0 [ContextTransitionFrame: 0450fb30]
0450fc28 63ef17b0 [UMThkCallFrame: 0450fc28]
0:005> KP / / список всех кадров стека
ChildEBP RetAddr
0450f868 048cde0d SilverlightApplication1! Button_Click (<HRESULT 0x80004001>)
0450f868 048cdd10 System_Windows! System.Windows.Controls.Primitives.ButtonBase.OnClick (<HRESULT 0x80004001>) +0 x5d
0450f878 048cdc3d System_Windows! System.Windows.Controls.Button.OnClick (<HRESULT 0x80004001>) +0 x48
0450f888 048cdba1 System_Windows! System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp (<HRESULT 0x80004001>) +0 x85
0450f898 0483a0e7 System_Windows! System.Windows.Controls.Control.OnMouseLeftButtonUp (<HRESULT 0x80004001>) +0 x41
0450f91c 63ef17b0 System_Windows! MS.Internal.JoltHelper.FireEvent (<HRESULT 0x80004001>) +0 x1b7
0450f934 63ef5f98 CoreCLR! CallDescrWorker +0 x33
0450f9b0 63f032bc CoreCLR! CallDescrWorkerWithHandler +0 x8e
0450f9d0 63f0345c CoreCLR! ForwardCallToManagedMethod +0 x55
0450faf4 63fc4abf CoreCLR! DoUMThunkCallWorker +0 x199
0450fbe0 04c513d2 CoreCLR! DoUMThunkCall +0 x1b4
ВНИМАНИЕ: Рама IP не в любом известном модуле. После кадров может быть неправильным.
0450fc10 6607e0db 0x4c513d2
0450fc70 6a6dc1fc agcore CCoreServices:: CLR_FireEvent +0 x183
Управляемые обработку кадра не удалось, HRESULT 0x80004005
0450fc84 6a6dc187 npctrl CommonBrowserHost:: CLR_FireEvent +0 x2a
0450fcc8 6a6dc048 npctrl CControlBase:: ScriptCallback +0 x366
0450fd08 6a6dc013 npctrl CXcpDispatcher:: OnScriptCallback +0 хеЕ
! 0450fd14 6a6dbfef npctrl CXcpDispatcher:: OnWindowMessage +0 x3a
0450fd2c 7731f8d2 npctrl CXcpDispatcher:: WindowProc +0 x7f
0450fd58 7731f794 USER32! InternalCallWinProc +0 x23
0450fdd0 77320008 USER32! UserCallWinProcCheckWow +0 x14b

/ / Изучить кучу, обратите внимание на удобство сильный набрали кучу объектов,
/ / Вместо нетипизированные байты, как в родной кучи
0:005>! DumpHeap типа SilverlightApplication1
Размер Адрес MT
04f4f31c 046336b0 36
04f59c78 04633a6c 68
всего 2 объектов
Статистика:
Граф М. Т. TotalSize Имя класса
046336b0 1 36 SilverlightApplication1.App
04633a6c 1 68 SilverlightApplication1.Page
Всего 2 объектов
0:005>! Сделать 04f59c78
Имя: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Размер: 68 (0x44) байт
Файл: SilverlightApplication1, Version = 1.0.0.0, Culture = нейтральной, PublicKeyToken = NULL
Поля:
MT смещение поля Тип VT Attr Значение имени
047d97a0 40000dc 4 ... 0 al.NativeResource например 04f5a5c0 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 примеру 00000000 _valueTable
047d9874 40000e0 с ... reTypeEventHelper 0 примеру 04f5a600 _coreTypeEventHelper
04856388 40000e3 10 ... bject, Mscorlib]] 0 примеру 04f79a58 _treeChildren
047ae03c 40000e4 14 ... 0 rnal.IManagedPeer например 00000000 _treeParent
03d50a90 40000dd 2b0 System.IntPtr 1 общей статической StaticNativePointer
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 00000000 <<
03d50f28 40000de 2В4 System.Boolean 1 общей статической _isCoreCreate
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 0 <<
047ae384 40000e1 8 .... DependencyObject 0 общей статической PropertyReferencesHolder
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f489b8 <<
04661618 40000e2 с ... flection.Assembly 0 общей статической _executingAssembly
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 00000000 <<
047d0b90 40000f1 18 ... 0 rs.AutomationPeer например 00000000 m_pAP
047d7404 40000e8 10 ... 0 ependencyProperty общей статической OpacityProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a4a8 <<
047d7404 40000e9 14 ... 0 ependencyProperty общей статической ClipProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a4d0 <<
047d7404 40000ea 18 ... 0 ependencyProperty общей статической RenderTransformProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a4f8 <<
047d7404 40000eb 1c ... ependencyProperty 0 общей статической OpacityMaskProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a50c <<
047d7404 40000ec 20 ... 0 ependencyProperty общей статической RenderTransformOriginProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a534 <<
047d7404 40000ed 24 ... 0 ependencyProperty общей статической IsHitTestVisibleProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a548 <<
047d7404 40000ee 28 ... 0 ependencyProperty общей статической VisibilityProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a570 <<
047d7404 40000ef 2c ... ependencyProperty 0 общей статической RenderSizeProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a598 <<
047d7404 40000f0 30 ... 0 ependencyProperty общей статической UseLayoutRoundingProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a5ac <<
00000000 4000108 0 1c например 00000000 BindingValidationError
04856ae4 400010a 20 ... 0 angedEventHandler например 00000000 DPChanged
048bc8a4 400010b 24 ... 0 angedEventHandler например 00000000 DataContextChanged
03d50f28 400010c 2с System.Boolean 1 экземпляр 0 _isDataContextBound
0481f43c 400010d 28 ... 0 angedEventHandler например 00000000 _sizeChanged
047d7404 40000f2 34 ... 0 ependencyProperty общей статической TriggersProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a144 <<
047d7404 40000f3 38 ... 0 ependencyProperty общей статической ResourcesProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a158 <<
047d7404 40000f4 3c ... ependencyProperty 0 общей статической LanguageProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a180 <<
047d7404 40000f5 40 ... 0 ependencyProperty общей статической ActualWidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a194 <<
047d7404 40000f6 44 ... 0 ependencyProperty общей статической ActualHeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1a8 <<
047d7404 40000f7 48 ... 0 ependencyProperty общей статической WidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1bc <<
047d7404 40000f8 4c ... ependencyProperty 0 общей статической HeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1d0 <<
047d7404 40000f9 50 ... 0 ependencyProperty общей статической MinWidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1e4 <<
047d7404 40000fa 54 ... 0 ependencyProperty общей статической MaxWidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1f8 <<
047d7404 40000fb 58 ... 0 ependencyProperty общей статической MinHeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a20c <<
047d7404 40000fc 5c ... ependencyProperty 0 общей статической MaxHeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a220 <<
047d7404 40000fd 60 ... 0 ependencyProperty общей статической HorizontalAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a234 <<
047d7404 40000fe 64 ... 0 ependencyProperty общей статической VerticalAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a248 <<
047d7404 40000ff 68 ... 0 ependencyProperty общей статической MarginProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a25c <<
047d7404 4000100 6c ... ependencyProperty 0 общей статической StyleProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a284 <<
047d7404 4000101 70 ... 0 ependencyProperty общей статической ParentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2ac <<
047d7404 4000102 74 ... 0 ependencyProperty общей статической NameProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2c0 <<
047d7404 4000103 78 ... 0 ependencyProperty общей статической TagProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2d4 <<
047d7404 4000104 7c ... ependencyProperty 0 общей статической TagInternalProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2fc <<
04851464 4000105 80 ... 0 ndows.RoutedEvent общей статической LoadedEvent
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a420 <<
047d7404 4000106 84 ... 0 ependencyProperty общей статической CursorProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a440 <<
047d7404 4000107 88 ... 0 ependencyProperty общей статической InstanceDelegateStoreProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a468 <<
047d7404 4000109 8c ... ependencyProperty 0 общей статической DataContextProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a494 <<
047a1e2c 400010e 90 ... rence, Mscorlib]] 0 общей статической _staticDelegateList
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 00000000 <<
00000000 4000264 30 ... 0 angedEventHandler например 00000000 IsEnabledChanged
047d7404 4000252 430 0 ... ependencyProperty общей статической IsTabStopProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59ce4 <<
047d7404 4000253 434 0 ... ependencyProperty общей статической TabIndexProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59cf8 <<
047d7404 4000254 438 0 ... ependencyProperty общей статической TemplateProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d20 <<
047d7404 4000255 43c ... ependencyProperty 0 общей статической TabNavigationProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d48 <<
047d7404 4000256 440 0 ... ependencyProperty общей статической PaddingProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d70 <<
047d7404 4000257 444 0 ... ependencyProperty общей статической HorizontalContentAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d98 <<
047d7404 4000258 448 0 ... ependencyProperty общей статической VerticalContentAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59dc0 <<
047d7404 4000259 44c ... ependencyProperty 0 общей статической BackgroundProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59de8 <<
047d7404 400025a 450 ... 0 ependencyProperty общей статической BorderBrushProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59dfc <<
047d7404 400025b 454 ... 0 ependencyProperty общей статической BorderThicknessProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e10 <<
047d7404 400025c 458 ... 0 ependencyProperty общей статической FontSizeProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e24 <<
047d7404 400025d 45C ... ependencyProperty 0 общей статической FontFamilyProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e4c <<
047d7404 400025e 460 ... 0 ependencyProperty общей статической ForegroundProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e60 <<
047d7404 400025f 464 ... 0 ependencyProperty общей статической FontWeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e88 <<
047d7404 4000260 468 0 ... ependencyProperty общей статической FontStyleProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59eb0 <<
047d7404 4000261 46c ... ependencyProperty 0 общей статической FontStretchProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59ed8 <<
047d7404 4000262 470 0 ... ependencyProperty общей статической DefaultStyleKeyProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59eec <<
047d7404 4000263 474 0 ... ependencyProperty общей статической IsEnabledProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59f00 <<
04857f14 4000265 478 ... System.Windows]] 0 общей статической _resourceDictionaryCache
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5cae4 <<
03cf5668 4000266 47C System.Object [] 0 общей статической _controlDelgates
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59f14 <<
047d7404 4000501 77C ... ependencyProperty 0 общей статической ContentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59cd0 <<
04852580 4000002 34 ... 0 ows.Controls.Grid например 04f79770 LayoutRoot
04852a10 4000003 38 ... 0 s.Controls.Button например 04f5b948 кнопку
03d50f28 4000004 3c System.Boolean 1 экземпляр 1 _contentLoaded

/ / Две строки выше, объект кнопки на странице объекта
/ / Запомним его адрес 04f5b948, так как мы будем относиться к ней позже
/ / Мы можем получить тот же адрес для кнопки объект через DumpHeap команду:
0:005>! DumpHeap-т 04852a10
Размер Адрес MT
04f5b948 04852a10 92
всего 1 объектов
Статистика:
Граф М. Т. TotalSize Имя класса
04852a10 1 92 System.Windows.Controls.Button
Всего 1 объектов
0:005>! Gcwhere 04f5b948 / / кнопка находится в gen0, поскольку нет еще GC
Адрес Gen кучи сегменте начинаются выделено размера
04f5b948 0 0 04f40000 04f41000 04f9fff4 0x5c (92)
0:005>! Gcroot 04f5b948 / / посмотрим, кто держит ссылку на объект кнопки
Примечание: Корни найти на стек может быть ложных срабатываний. Запуск "! Поможет gcroot" для
подробнее.
/ / Реестра ссылки
ECX: Root: 04f59c78 (SilverlightApplication1.Page) ->
04f5b948 (System.Windows.Controls.Button) ->
EDX: Root: 04f5b948 (System.Windows.Controls.Button) ->
/ / Стек ссылки
Сканирование Тема 5 OSTHread 1b08
ESP: 450f860: Root: 04f5ca18 (System.Windows.RoutedEventHandler) ->
04f59c78 (SilverlightApplication1.Page) ->
04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f864: Root: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f874: Root: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f884: Root: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f894: Root: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f8d4: Root: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f8e4: Root: 04f5b948 (System.Windows.Controls.Button) ->
Сканирование Тема 9 OSTHread 928
Сканирование Тема 10 OSTHread 1e8c
/ / Домен ссылки
DOMAIN (06F529D8): HANDLE (ВАЖНО): 46412f8: Root: 05f44260 (System.Object [])->
04f45234 (System.Collections.Generic.List `1 [[System.Object, Mscorlib ]])->
04f59980 (System.Object [])->
04f59c78 (SilverlightApplication1.Page) ->
04f5b948 (System.Windows.Controls.Button) ->
Управляемые обработку кадра не удалось, HRESULT 0x80004005
Комплексная по отладке управляемого кода не поддерживает перечисление локальных переменных.
Смотрите http://dbg/managed.htm для более подробной информации.

/ / Рассмотреть кнопку сам объект
0:005>! Сделать 04f5b948
Имя: System.Windows.Controls.Button
MethodTable: 04852a10
EEClass: 0482e5f0
Размер: 92 (0x5c) байт
Файл: C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ System.Windows.dll
Поля:
MT смещение поля Тип VT Attr Значение имени
047d97a0 40000dc 4 ... 0 al.NativeResource например 04f5bd58 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 примеру 04f5c0bc _valueTable
047d9874 40000e0 с ... reTypeEventHelper 0 примеру 04f5bd88 _coreTypeEventHelper
04856388 40000e3 10 ... bject, Mscorlib]] 0 примеру 04f5bee8 _treeChildren
047ae03c 40000e4 14 ... 0 rnal.IManagedPeer например 04f79770 _treeParent
03d50a90 40000dd 2b0 System.IntPtr 1 общей статической StaticNativePointer
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 00000000 <<
03d50f28 40000de 2В4 System.Boolean 1 общей статической _isCoreCreate
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 0 <<
047ae384 40000e1 8 .... DependencyObject 0 общей статической PropertyReferencesHolder
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f489b8 <<
04661618 40000e2 с ... flection.Assembly 0 общей статической _executingAssembly
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 00000000 <<
047d0b90 40000f1 18 ... 0 rs.AutomationPeer например 00000000 m_pAP
047d7404 40000e8 10 ... 0 ependencyProperty общей статической OpacityProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a4a8 <<
047d7404 40000e9 14 ... 0 ependencyProperty общей статической ClipProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a4d0 <<
047d7404 40000ea 18 ... 0 ependencyProperty общей статической RenderTransformProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a4f8 <<
047d7404 40000eb 1c ... ependencyProperty 0 общей статической OpacityMaskProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a50c <<
047d7404 40000ec 20 ... 0 ependencyProperty общей статической RenderTransformOriginProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a534 <<
047d7404 40000ed 24 ... 0 ependencyProperty общей статической IsHitTestVisibleProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a548 <<
047d7404 40000ee 28 ... 0 ependencyProperty общей статической VisibilityProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a570 <<
047d7404 40000ef 2c ... ependencyProperty 0 общей статической RenderSizeProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a598 <<
047d7404 40000f0 30 ... 0 ependencyProperty общей статической UseLayoutRoundingProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a5ac <<
00000000 4000108 0 1c например 00000000 BindingValidationError
04856ae4 400010a 20 ... 0 angedEventHandler например 00000000 DPChanged
048bc8a4 400010b 24 ... 0 angedEventHandler например 00000000 DataContextChanged
03d50f28 400010c 2с System.Boolean 1 экземпляр 0 _isDataContextBound
0481f43c 400010d 28 ... 0 angedEventHandler например 00000000 _sizeChanged
047d7404 40000f2 34 ... 0 ependencyProperty общей статической TriggersProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a144 <<
047d7404 40000f3 38 ... 0 ependencyProperty общей статической ResourcesProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a158 <<
047d7404 40000f4 3c ... ependencyProperty 0 общей статической LanguageProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a180 <<
047d7404 40000f5 40 ... 0 ependencyProperty общей статической ActualWidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a194 <<
047d7404 40000f6 44 ... 0 ependencyProperty общей статической ActualHeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1a8 <<
047d7404 40000f7 48 ... 0 ependencyProperty общей статической WidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1bc <<
047d7404 40000f8 4c ... ependencyProperty 0 общей статической HeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1d0 <<
047d7404 40000f9 50 ... 0 ependencyProperty общей статической MinWidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1e4 <<
047d7404 40000fa 54 ... 0 ependencyProperty общей статической MaxWidthProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a1f8 <<
047d7404 40000fb 58 ... 0 ependencyProperty общей статической MinHeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a20c <<
047d7404 40000fc 5c ... ependencyProperty 0 общей статической MaxHeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a220 <<
047d7404 40000fd 60 ... 0 ependencyProperty общей статической HorizontalAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a234 <<
047d7404 40000fe 64 ... 0 ependencyProperty общей статической VerticalAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a248 <<
047d7404 40000ff 68 ... 0 ependencyProperty общей статической MarginProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a25c <<
047d7404 4000100 6c ... ependencyProperty 0 общей статической StyleProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a284 <<
047d7404 4000101 70 ... 0 ependencyProperty общей статической ParentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2ac <<
047d7404 4000102 74 ... 0 ependencyProperty общей статической NameProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2c0 <<
047d7404 4000103 78 ... 0 ependencyProperty общей статической TagProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2d4 <<
047d7404 4000104 7c ... ependencyProperty 0 общей статической TagInternalProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a2fc <<
04851464 4000105 80 ... 0 ndows.RoutedEvent общей статической LoadedEvent
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a420 <<
047d7404 4000106 84 ... 0 ependencyProperty общей статической CursorProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a440 <<
047d7404 4000107 88 ... 0 ependencyProperty общей статической InstanceDelegateStoreProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a468 <<
047d7404 4000109 8c ... ependencyProperty 0 общей статической DataContextProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5a494 <<
047a1e2c 400010e 90 ... rence, Mscorlib]] 0 общей статической _staticDelegateList
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 00000000 <<
00000000 4000264 30 ... 0 angedEventHandler например 00000000 IsEnabledChanged
047d7404 4000252 430 0 ... ependencyProperty общей статической IsTabStopProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59ce4 <<
047d7404 4000253 434 0 ... ependencyProperty общей статической TabIndexProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59cf8 <<
047d7404 4000254 438 0 ... ependencyProperty общей статической TemplateProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d20 <<
047d7404 4000255 43c ... ependencyProperty 0 общей статической TabNavigationProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d48 <<
047d7404 4000256 440 0 ... ependencyProperty общей статической PaddingProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d70 <<
047d7404 4000257 444 0 ... ependencyProperty общей статической HorizontalContentAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59d98 <<
047d7404 4000258 448 0 ... ependencyProperty общей статической VerticalContentAlignmentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59dc0 <<
047d7404 4000259 44c ... ependencyProperty 0 общей статической BackgroundProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59de8 <<
047d7404 400025a 450 ... 0 ependencyProperty общей статической BorderBrushProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59dfc <<
047d7404 400025b 454 ... 0 ependencyProperty общей статической BorderThicknessProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e10 <<
047d7404 400025c 458 ... 0 ependencyProperty общей статической FontSizeProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e24 <<
047d7404 400025d 45C ... ependencyProperty 0 общей статической FontFamilyProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e4c <<
047d7404 400025e 460 ... 0 ependencyProperty общей статической ForegroundProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e60 <<
047d7404 400025f 464 ... 0 ependencyProperty общей статической FontWeightProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59e88 <<
047d7404 4000260 468 0 ... ependencyProperty общей статической FontStyleProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59eb0 <<
047d7404 4000261 46c ... ependencyProperty 0 общей статической FontStretchProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59ed8 <<
047d7404 4000262 470 0 ... ependencyProperty общей статической DefaultStyleKeyProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59eec <<
047d7404 4000263 474 0 ... ependencyProperty общей статической IsEnabledProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59f00 <<
04857f14 4000265 478 ... System.Windows]] 0 общей статической _resourceDictionaryCache
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5cae4 <<
03cf5668 4000266 47C System.Object [] 0 общей статической _controlDelgates
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f59f14 <<
03cf44e8 40002b4 34 System.Object 0 примеру 00000000 _treeContent
047d7404 40002b3 530 ... 0 ependencyProperty общей статической ContentTemplateProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5bd30 <<
047d7404 40002b5 534 ... 0 ependencyProperty общей статической ContentProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5bd44 <<
03d50f28 40005aa 40 System.Boolean 1 экземпляр 1 _isLoaded
03d50f28 40005ab 41 System.Boolean 1 экземпляр 1 _isMouseCaptured
03d50f28 40005ac 42 System.Boolean 1 экземпляр 0 _isSpaceKeyDown
03d50f28 40005ad 43 System.Boolean 1 экземпляр 0 _isMouseLeftButtonDown
04852208 40005ae 48 System.Windows.Point 1 экземпляр 04f5b990 _mousePosition
048b5f98 40005af 38 ... 0 mation.Storyboard например 00000000 _currentState
03d50f28 40005b0 44 System.Boolean 1 экземпляр 0 _suspendStateChanges
0481fae0 40005b1 3c ... outedEventHandler 0 примеру 04f5ca18 нажмите
047d7404 40005a6 7e0 ... ependencyProperty 0 общей статической ClickModeProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5ba7c <<
047d7404 40005a7 7e4 ... ependencyProperty 0 общей статической IsFocusedProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5bb38 <<
047d7404 40005a8 7e8 ... ependencyProperty 0 общей статической IsMouseOverProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5bbd8 <<
047d7404 40005a9 7ec ... ependencyProperty 0 общей статической IsPressedProperty
>> Домен: Соотношение 0433c738: NotInit 06f529d8: 04f5bc40 <<

/ / Скидываем Button.Click поле (9 строк выше)
0:005>! Сделать 04f5ca18
Имя: System.Windows.RoutedEventHandler
MethodTable: 0481fae0
EEClass: 0482c99c
Размер: 32 (0x20) байт
Файл: C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ System.Windows.dll
Поля:
MT смещение поля Тип VT Attr Значение имени
03cf44e8 40001e0 4 System.Object 0 примеру 04f59c78 _target
04663c58 40001e1 8 ... 0 ection.MethodBase например 00000000 _MethodBase
03d50a90 40001e2 с System.IntPtr 1 экземпляр 463c08c _methodPtr
03d50a90 40001e3 10 System.IntPtr 1 экземпляр 0 _methodPtrAux
03cf44e8 40001e4 14 System.Object 0 примеру 00000000 _invocationList
03d50a90 40001e5 18 System.IntPtr 1 экземпляр 0 _invocationCount

0:005>! Сделай nofields 04f59c78 / / Проверка _target является страница
Имя: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Размер: 68 (0x44) байт
Файл: SilverlightApplication1, Version = 1.0.0.0, Culture = нейтральной, PublicKeyToken = NULL

/ / Проверка _methodPtr указывает на Button_Click
/ / Посмотрим, как все они связаны друг с другом
0:005> Л. Н. 463c08c
(0463c08c) SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
0:005> и 463c08c / / JIT-е изд заглушку метода
SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs):
0463c08c b8303a6304 MOV EAX, 4633A30h
0463c091 89ed MOV EBP, EBP
0463c093 e900431c00 JMP SilverlightApplication1! Button_Click (04800398)
0463c098 0000 добавить BYTE PTR [EAX], др.
0463c09a 0000 добавить BYTE PTR [EAX], др.
0463c09c 0000 добавить BYTE PTR [EAX], др.
0463c09e 0000 добавить BYTE PTR [EAX], др.
0463c0a0 0000 добавить BYTE PTR [EAX], др.
0:005> и EIP / / JIT-е изд машинный код
! SilverlightApplication1 Button_Click:
04800398 55 PUSH EBP
04800399 8bec MOV EBP, ESP
0480039b 83ec08 SUB ESP, 8
0480039e 894dfc MOV DWORD PTR [EBP-4], ECX
048003a1 8955f8 MOV DWORD PTR [EBP-8], EDX
048003a4 833d7435630400 CMP DWORD PTR DS: [4633574h], 0
048003ab 7405 е SilverlightApplication1! Button_Click +0 x1a (048003b2)
048003ad e8862a895f называть CoreCLR! JIT_DbgIsJustMyCode (64092e38)
0:005>! Ip2md 04800398
MethodDesc: 04633a30
Имя метода: SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
Класс: 0463196c
MethodTable: 04633a6c
mdToken: 06000008
Модуль: 046333b4
IsJitted: да
CodeAddr: 04800398
0:005>! Dumpil 04633a30
ilAddr = 047e03fe
IL_0000: NOP
IL_0001: в отставке

Когда у меня есть время, я могу написать сообщение в блоге на внутреннем CLR, чтобы продемонстрировать, как объекты располагаются в памяти, как вызовы методов отправляются и т.д.

Заключение

Это длинный пост, но все же едва составляют обзор WinDbg и SOS. Хорошее понимание CLR важно для кодирования и отладки, WinDbg с SOS является лучшим инструментом для изучения CLR и делают передовые отладки. Надеюсь, что это короткое еще длинный пост поможет вам начать работу в изучении CLR и Silverlight. Спасибо!

Technorati Теги: , , , ,
Tags: , , , Категории: Debug , Silverlight Теги: , , ,