SlideShare a Scribd company logo
1 of 49
WinDbg
сотоварищи
Михаил Щербаков
MSK .NET Meetup #1
Independent Consultant
Обо мне
 Консультант, Upwork’er,
 Разработчик проекта IntelliDebugger http://intelliegg.com
 Координатор сообществ .NET программистов Москвы и
Санкт-Петербурга http://mskdotnet.org/ http://spbdotnet.org
 В прошлом менеджер по продуктам и тимлид в Cezurity,
Acronis, Luxoft, Boeing
Зачем WinDbg мне?
Какой отладчик использовать, если
нужно отлаживать расширение
отладчика Visual Studio,
отлаживающего другой процесс?
Зачем он вам?
- Найти deadlock?
- Легко* с WinDbg
Зачем он вам?
Плюсы WinDbg
 Легкий отладчик, быстро запускается
 Предоставляет больше данных для анализа
 Гибкая и автоматизируемая скриптами отладка кода
 Вменяемый анализ дампов
 Вменяемая отладка смешанного (mixed) кода
Минусы WinDbg
 Командная строка - долго не используешь, быстро забываешь
 Ужасный GUI
 Имеет странности
Настройка WinDbg
Командная строка
http://www.wintellect.com/devcenter/jrobbins/a-cool-windbg-sos-hidden-feature
 Удобно использовать
.cmdtree
Графический интерфейс
https://github.com/yuske/DotNextMsk2015
Отладочные символы
0:000> .sympath
Symbol search path is: <empty>
Отладочные символы
0:000> .sympath+ c:mysymbols
Symbol search path is: c:mysymbols
0:000> .reload
Reloading current modules
....
*** ERROR: Symbol file could not be found. Defaulted
to export symbols for ntdll.dll
0:000> .symfix
Отладочные символы
> setx _NT_SYMBOL_PATH cache*C:symbols;SRV*C:symbo
ls*http://msdl.microsoft.com/download/symbols;host
buldslast /m
> set _NT_ALT_SYMBOL_PATH <path>
https://msdn.microsoft.com/en-
us/library/windows/hardware/ff558829(v=vs.85).aspx
Отображение переменных
0:000> dx /?
DX [-r[#]] <expr> - display C++ expression using
extension model (e.g.: NatVis)
DX [-r[#]] <expr>[,<FormatSpecifier>] - display C++
expression using extension model (e.g.: NatVis) in a
specified format
https://msdn.microsoft.com/en-
us/library/windows/hardware/dn936815(v=vs.85).aspx
Отображение переменных
> cd "C:Program Files (x86)Windows Kits10
Debuggersx86"
> mklink /d Visualizers "C:Program Files (x86)
Microsoft Visual Studio 14.0Common7Packages
DebuggerVisualizers“
Расширения для отладки .NET кода
 SOS http://bit.ly/1PUofK9
 SOSEX http://www.stevestechspot.com/
 NetExt http://netext.codeplex.com/
 PSSCOR2/PSSCOR4 http://bit.ly/1kOJLEV; http://bit.ly/1NKan0G
 SDbgExt2 https://github.com/steveniemitz/SDbgExt2
Сценарии отладки
Загрузка расширений
0:000> .loadby sos.dll clr
0:000> .load sosex
0:000> .load netext
0:000> .load psscor4
0:000> .load spt
Исследование метаданных
 Type Handle
 Sync Block Table
 Method Table
 Method Descriptors
 Modules
 Metadata Tokens
 EEClass
Исследование метаданных
!DumpDomain [<domain address>]
!DumpModule [-mt] <Module address>
!DumpAssembly <assembly address>
!DumpClass <EEClass address>
!DumpMT [-MD] <MethodTable address>
!IP2MD <code address>
!DumpMD <MethodDesc address>
!Name2EE <type name>
Исследование метаданных
0:000> !mx Demo!*Thread*
AppDomain 724c6770 (Shared Domain)
----------------------------------------------------
AppDomain 0085dc28 (Demo.exe)
----------------------------------------------------
module: Demo
class: Demo.Program
StartThreadA()
StartThreadB()
Управление точками останова
0:004> !name2ee Bar.exe Bar.App.Foo
Module: 00112d8c (Bar.exe)
Token: 0x06000002
MethodDesc: 00113178
Name: Bar.App.Foo(Int32, Int32)
JITTED Code Address: 003e0178
0:004> bp 003e0178
Управление точками останова
0:004> !name2ee Bar.exe Bar.App.Foo
Module: 00112d8c (Bar.exe)
Token: 0x06000002
MethodDesc: 00113178
Name: Bar.App.Foo(Int32, Int32)
Not JITTED yet. Use !bpmd -md 00113178 to break on run.
0:004> !bpmd –md 00113178
MethodDesc = 00113178
Adding pending breakpoints...
Управление точками останова
0:004> !bpmd Bar.exe Bar.Comparer`1.GreaterThan
Found 1 methods...
MethodDesc = 001a3188
Adding pending breakpoints...
Управление точками останова
!mbm <Type/Method Filter> [ILOffset] [Options]
!mbp <SourceFile> <nLineNum> [ColNum] [Options]
Исследование .NET Framework
Операции с потоками
Операции с потоками
0:004> !threads
ThreadCount: 3
UnstartedThread: 0
BackgroundThread: 1
...
ID OSID ThreadOBJ State ... Apt Exception
0 1 316c 0109b6e0 202a020 MTA
5 2 1f88 010a8e98 2b220 MTA (Finalizer)
6 3 1968 010c8960 202b020 MTA
Операции с потоками
0:004> !ClrStack
OS Thread Id: 0x316c (0)
Child SP IP Call Site
0018ec34 77b96e3c [HelperMethodFrame: 0018ec34]
System.Threading.Thread.SleepInternal(Int32)
0018ecb8 70bebfca System.Threading.Thread.Sleep(Int32)
0018ecc0 00f30740 Demo.Program.SampleB()
[C:DemoProgram.cs @ 66]
0018ed14 00f304ed Demo.Program.Main(System.String[])
[C:DemoProgram.cs @ 17]
Операции с потоками
!DumpStack [-ee]
!mk [FrameCount] [-l] [-p] [-a]
!EEStack –short [-ee]
Поиск deadlock’ов
Исследование объектов в памяти
0:000> dd 0x01e06bec
01e06bec 001c30b0 00000000 00000000 00000000
01e06bfc 80000000 790fd8c4 00000014 00000013
01e06c0c 003a0078 0030007b 002c007d 00790020
01e06c1c 007b003a 007d0031 0020002c 003a007a
01e06c2c 0032007b 0000007d 00000000 00000000
01e06c3c 00000000 00000000 00000000 00000000
01e06c4c 00000000 00000000 00000000 00000000
01e06c5c 00000000 00000000 00000000 00000000
Исследование объектов в памяти
0:000> !DumpObj 0x01c56bec
Name: Bar.App
MethodTable: 002130b0
EEClass: 00211240
Size: 20(0x14) bytes (C:samplesBar.exe)
...
Исследование объектов в памяти
!DumpVC <MethodTable address> <Address>
!DumpArray [-start <startIndex>] [-length <length>]
[-details] [-nofields] <Array object address>
Исследование объектов в памяти
0:000>!mdt 02772f90 -r
02772f90 (Demo.Bar)
array:02772ff8 (System.Int32[], Elements: 4)
list:02773038 (.List`1[[System.String, mscorlib]])
_items:0277305c (System.String[], Elements: 4)
_size:0x2 (System.Int32)
_version:0x2 (System.Int32)
_syncRoot:NULL (System.Object)
<CurrentPoint>k__BackingField:(Demo.Point) VALTYPE
Исследование объектов в памяти
!DumpHeap [-stat] [-strings] [-short] [-min <size>]
[-max <size>] [-thinlock] [-startAtLowerBound] [-mt
<MethodTable address>] [-type <partial type
name>][start [end]]
!DumpRuntimeTypes
!strings
!EEHeap [-gc] [-loader]
!TraverseHeap [-xml] <filename>
!VerifyHeap
Исследование объектов в памяти
0:006> !HeapStat -iu
Heap Gen0 Gen1 Gen2 LOH
Heap0 188636 6297752 256636732 17592
Free space:
Heap0 12 116 6916 80
Unrooted objects:
Heap0 170476 6297584 256616572 0
Исследование объектов в памяти
!GCRoot [-nostacks] <Object address>
!gcgen <hexObjectAddr>
!dumpgen <intGenNum> [-free] [-stat] [-type
<TYPE_NAME>] [-nostrings]
Анализ memory leak’ов
Отладка web-приложений
!whttp – список HttpContext обектов
!wservice – список WCF service обектов
!wsocket – информация о сокетах
!DumpASPNetRequests – список потоков с HttpContext
!DumpSqlConnectionPools – информация о всех Sql
сonnection pools
Дополнительные инструменты
dnSpy
https://github.com/0xd4d/dnSpy
CLR MD (Microsoft.Diagnostics.Runtime.dll)
http://msk2015.dotnext.ru/talks/goldshtein
PyKd
http://2015.phdays.ru/program/40602
Что дальше?
Книги
http://amzn.to/21TWSWd http://amzn.to/1NK2bl0 http://amzn.to/1QzZIdR
Блоги
 Sasha Goldshtein
http://blogs.microsoft.co.il/sasha/
 John Robbins
http://www.wintellect.com/devcenter/jrobbins
 EreTIk's Box
http://eretik.omegahg.com/WinDbg.html
Цитата
Спасибо за внимание!
Михаил Щербаков
intelliegg.com
spbdotnet.org
github.com/yuske
@yu5k3
Independent Consultant

More Related Content

What's hot

Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2Technopark
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3Technopark
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9Technopark
 
Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"IT Event
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1Technopark
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Подводные камни System.Security.Cryptography
Подводные камни System.Security.CryptographyПодводные камни System.Security.Cryptography
Подводные камни System.Security.CryptographyVladimir Kochetkov
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorDevGAMM Conference
 
Многопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихМногопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихYandex
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кодаAndrey Karpov
 
Подводные камни прикладной криптографии, I
Подводные камни прикладной криптографии, IПодводные камни прикладной криптографии, I
Подводные камни прикладной криптографии, IVladimir Kochetkov
 
Почему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияПочему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияMichael Pankov
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
 
Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8
Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8
Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8DefconRussia
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"Yandex
 
Valgrind
ValgrindValgrind
Valgrindium13
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8Technopark
 
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Yandex
 

What's hot (20)

Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9
 
JSQuest d:)
JSQuest   d:)JSQuest   d:)
JSQuest d:)
 
Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Подводные камни System.Security.Cryptography
Подводные камни System.Security.CryptographyПодводные камни System.Security.Cryptography
Подводные камни System.Security.Cryptography
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at Vizor
 
Многопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихМногопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин Крамлих
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода
 
Подводные камни прикладной криптографии, I
Подводные камни прикладной криптографии, IПодводные камни прикладной криптографии, I
Подводные камни прикладной криптографии, I
 
Почему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияПочему Rust стоит вашего внимания
Почему Rust стоит вашего внимания
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
 
Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8
Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8
Nikita Tarakanov - Kernel Pool Overflow from Windows XP to Windows 8
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"
 
Valgrind
ValgrindValgrind
Valgrind
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
 
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
 

Viewers also liked

Автоматизация отладки в windbg
Автоматизация отладки в windbgАвтоматизация отладки в windbg
Автоматизация отладки в windbgPositive Hack Days
 
17. luh maha pitriyani (1211031224)
17. luh maha pitriyani (1211031224)17. luh maha pitriyani (1211031224)
17. luh maha pitriyani (1211031224)dekarida
 
5 Seconds Of Summer - Ask / Reply
5 Seconds Of Summer - Ask / Reply5 Seconds Of Summer - Ask / Reply
5 Seconds Of Summer - Ask / ReplySam Ryan
 
611.зоогигиенатерминологический словарь справочник
611.зоогигиенатерминологический словарь справочник611.зоогигиенатерминологический словарь справочник
611.зоогигиенатерминологический словарь справочникefwd2ws2qws2qsdw
 
Group Name Questionnaire
Group Name QuestionnaireGroup Name Questionnaire
Group Name QuestionnaireKiera_Herbert
 
HB_Brochure Pension Sector Group_V2
HB_Brochure Pension Sector Group_V2HB_Brochure Pension Sector Group_V2
HB_Brochure Pension Sector Group_V2Maarten Minnaard
 
Evaluation 4
Evaluation 4Evaluation 4
Evaluation 4SHEKARIE
 
Derecho constitucional.
Derecho constitucional.Derecho constitucional.
Derecho constitucional.EmiFabi
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDBDenny Lee
 
poster spring senior year
poster spring senior yearposter spring senior year
poster spring senior yearRuby Slabicki
 
Historyofanimalcellculturecellfinal 120928123709-phpapp01
Historyofanimalcellculturecellfinal 120928123709-phpapp01Historyofanimalcellculturecellfinal 120928123709-phpapp01
Historyofanimalcellculturecellfinal 120928123709-phpapp01maneesh kumar muppidi
 
Information System Crimes and issues
Information System Crimes and issuesInformation System Crimes and issues
Information System Crimes and issuesJyotindra Zaveri
 
Questionnaire Results
Questionnaire ResultsQuestionnaire Results
Questionnaire ResultsKiera_Herbert
 

Viewers also liked (15)

Автоматизация отладки в windbg
Автоматизация отладки в windbgАвтоматизация отладки в windbg
Автоматизация отладки в windbg
 
Presentación1
Presentación1Presentación1
Presentación1
 
17. luh maha pitriyani (1211031224)
17. luh maha pitriyani (1211031224)17. luh maha pitriyani (1211031224)
17. luh maha pitriyani (1211031224)
 
5 Seconds Of Summer - Ask / Reply
5 Seconds Of Summer - Ask / Reply5 Seconds Of Summer - Ask / Reply
5 Seconds Of Summer - Ask / Reply
 
611.зоогигиенатерминологический словарь справочник
611.зоогигиенатерминологический словарь справочник611.зоогигиенатерминологический словарь справочник
611.зоогигиенатерминологический словарь справочник
 
slide share
slide shareslide share
slide share
 
Group Name Questionnaire
Group Name QuestionnaireGroup Name Questionnaire
Group Name Questionnaire
 
HB_Brochure Pension Sector Group_V2
HB_Brochure Pension Sector Group_V2HB_Brochure Pension Sector Group_V2
HB_Brochure Pension Sector Group_V2
 
Evaluation 4
Evaluation 4Evaluation 4
Evaluation 4
 
Derecho constitucional.
Derecho constitucional.Derecho constitucional.
Derecho constitucional.
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
poster spring senior year
poster spring senior yearposter spring senior year
poster spring senior year
 
Historyofanimalcellculturecellfinal 120928123709-phpapp01
Historyofanimalcellculturecellfinal 120928123709-phpapp01Historyofanimalcellculturecellfinal 120928123709-phpapp01
Historyofanimalcellculturecellfinal 120928123709-phpapp01
 
Information System Crimes and issues
Information System Crimes and issuesInformation System Crimes and issues
Information System Crimes and issues
 
Questionnaire Results
Questionnaire ResultsQuestionnaire Results
Questionnaire Results
 

Similar to Михаил Щербаков "WinDbg сотоварищи"

Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Ontico
 
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Anton Arhipov
 
Делаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх WebdriverДелаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх WebdriverSQALab
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыd_olex
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингTimophy Chaptykov
 
Антон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времениАнтон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времениCOMAQA.BY
 
«Introduction to malware reverse engineering» by Sergey Kharyuk
«Introduction to malware reverse engineering» by Sergey Kharyuk«Introduction to malware reverse engineering» by Sergey Kharyuk
«Introduction to malware reverse engineering» by Sergey Kharyuk0xdec0de
 
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
 «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus0xdec0de
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениSQALab
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Andrew Mayorov
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаYandex
 
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеSAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеAndrey Karpov
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
Некриптографическое исследование носителей православной криптографии
Некриптографическое исследование носителей  православной криптографииНекриптографическое исследование носителей  православной криптографии
Некриптографическое исследование носителей православной криптографииSergey Soldatov
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)Smolensk Computer Science Club
 

Similar to Михаил Щербаков "WinDbg сотоварищи" (20)

Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
 
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)
 
Делаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх WebdriverДелаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх Webdriver
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективы
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
 
Антон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времениАнтон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времени
 
«Introduction to malware reverse engineering» by Sergey Kharyuk
«Introduction to malware reverse engineering» by Sergey Kharyuk«Introduction to malware reverse engineering» by Sergey Kharyuk
«Introduction to malware reverse engineering» by Sergey Kharyuk
 
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
 «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времени
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеSAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в коде
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Некриптографическое исследование носителей православной криптографии
Некриптографическое исследование носителей  православной криптографииНекриптографическое исследование носителей  православной криптографии
Некриптографическое исследование носителей православной криптографии
 
PowerShell
PowerShellPowerShell
PowerShell
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 

More from Mikhail Shcherbakov

Mythbusters - Web Application Security
Mythbusters - Web Application SecurityMythbusters - Web Application Security
Mythbusters - Web Application SecurityMikhail Shcherbakov
 
Apache Ignite.NET в действии
Apache Ignite.NET в действииApache Ignite.NET в действии
Apache Ignite.NET в действииMikhail Shcherbakov
 
Архитектура Apache Ignite .NET
Архитектура Apache Ignite .NETАрхитектура Apache Ignite .NET
Архитектура Apache Ignite .NETMikhail Shcherbakov
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridMikhail Shcherbakov
 
сценарии использования статического анализатора
сценарии использования статического анализаторасценарии использования статического анализатора
сценарии использования статического анализатораMikhail Shcherbakov
 
WCF. Легко или проблемно
WCF. Легко или проблемноWCF. Легко или проблемно
WCF. Легко или проблемноMikhail Shcherbakov
 
Поиск ошибок в программах на языке C#
Поиск ошибок в программах на языке C#Поиск ошибок в программах на языке C#
Поиск ошибок в программах на языке C#Mikhail Shcherbakov
 
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3. Mikhail Shcherbakov
 
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationMikhail Shcherbakov
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETMikhail Shcherbakov
 
Использование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахИспользование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахMikhail Shcherbakov
 
Когда в C# не хватает C++ . Часть 2.
Когда в C# не хватает C++. Часть 2.Когда в C# не хватает C++. Часть 2.
Когда в C# не хватает C++ . Часть 2.Mikhail Shcherbakov
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийMikhail Shcherbakov
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++Mikhail Shcherbakov
 
Как это работает: DLR
Как это работает: DLRКак это работает: DLR
Как это работает: DLRMikhail Shcherbakov
 
Visual Studio 2015 Diagnostic and Debugging Tools
Visual Studio 2015 Diagnostic and Debugging ToolsVisual Studio 2015 Diagnostic and Debugging Tools
Visual Studio 2015 Diagnostic and Debugging ToolsMikhail Shcherbakov
 

More from Mikhail Shcherbakov (20)

Delegates and events in C#
Delegates and events in C#Delegates and events in C#
Delegates and events in C#
 
Mythbusters - Web Application Security
Mythbusters - Web Application SecurityMythbusters - Web Application Security
Mythbusters - Web Application Security
 
Apache Ignite.NET в действии
Apache Ignite.NET в действииApache Ignite.NET в действии
Apache Ignite.NET в действии
 
Архитектура Apache Ignite .NET
Архитектура Apache Ignite .NETАрхитектура Apache Ignite .NET
Архитектура Apache Ignite .NET
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data Grid
 
сценарии использования статического анализатора
сценарии использования статического анализаторасценарии использования статического анализатора
сценарии использования статического анализатора
 
WCF. Легко или проблемно
WCF. Легко или проблемноWCF. Легко или проблемно
WCF. Легко или проблемно
 
Поиск ошибок в программах на языке C#
Поиск ошибок в программах на языке C#Поиск ошибок в программах на языке C#
Поиск ошибок в программах на языке C#
 
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3.
 
Project Rider
Project RiderProject Rider
Project Rider
 
Structured logging
Structured loggingStructured logging
Structured logging
 
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
 
Использование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахИспользование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектах
 
Sandboxing in .NET CLR
Sandboxing in .NET CLRSandboxing in .NET CLR
Sandboxing in .NET CLR
 
Когда в C# не хватает C++ . Часть 2.
Когда в C# не хватает C++. Часть 2.Когда в C# не хватает C++. Часть 2.
Когда в C# не хватает C++ . Часть 2.
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++
 
Как это работает: DLR
Как это работает: DLRКак это работает: DLR
Как это работает: DLR
 
Visual Studio 2015 Diagnostic and Debugging Tools
Visual Studio 2015 Diagnostic and Debugging ToolsVisual Studio 2015 Diagnostic and Debugging Tools
Visual Studio 2015 Diagnostic and Debugging Tools
 

Михаил Щербаков "WinDbg сотоварищи"

Editor's Notes

  1. Командная строка - в этом вся мощь WinDbg и его также его недостаток. Я использую его когда надо отлаживать VS. Хотя это и весело, делаю я это не часто
  2. http://eretik.omegahg.com/kd/windbg_natvis.html
  3. Рассказать про мета-команды с префиксом “.” (для просмотра всех help), команды расширения – с префиксом “!” .loadby sos mscorwks – для .NET 2.0
  4. из расширения SOSEX
  5. Показать декомпилирования в IL код и дизасемблирование в ASM + работу с методанными
  6. Показать декомпилирования в IL код и дизасемблирование в ASM + работу с метаданными
  7. Если метод перегружен bpmd устанавливает точку останова во всех перегруженных методах
  8. Эти команды из SOSEX.
  9. Мы посмотрим на пример установки точки останова внутри .NET FW и анализа получаемой информации.
  10. У команды !EEStack есть замечательный параметр –short, при вызове с ним !EEStack показывает только «интересные» потоки: * потоки которые взяли блокировку; * потоки захваченные для выполнения сборки мусора; * потоки сейчас выполняемые в управляемом коде. -ee – отображаются только managed stack frames
  11. Добавить имена и MethodTable полей
  12. Сделать пример получения значения поля из предыдущего примера
  13. Сделать пример получения значения поля из предыдущего примера
  14. Это упрощенный пример боевого применения WinDbg
  15. dnlib
  16. На мой взгляд эта фраза отлично описывает, то чем мы занимаемся: Отладка – это как быть детективом в криминальном фильме, где ты одновременно являешься и убийцей
  17. И WinDbg – это отличный инструмент с поистине безграничными возможностями. Да, у него есть минусы в настройке и удобстве использования, но с помощью него вы можете распутать самые сложные кейсы. И я сейчас работаем над проектом IntelliDebugger, как раз чтобы привнести многие полезные фичи WinDbg в процесс отладки из Visual Studio. Думаю получится круто!