MSK. NET Meetup #1

Скачать презентацию MSK. NET Meetup #1 Скачать презентацию MSK. NET Meetup #1

WinDbg сотоварищи.pptx

  • Количество слайдов: 49

>MSK. NET Meetup #1      Win. Dbg   MSK. NET Meetup #1 Win. Dbg сотоварищи Михаил Щербаков Independent Consultant

>Обо мне § Консультант, Upwork’er, § Разработчик проекта Intelli. Debugger http: //intelliegg. com § Обо мне § Консультант, Upwork’er, § Разработчик проекта Intelli. Debugger http: //intelliegg. com § Координатор сообществ. NET программистов Москвы и Санкт-Петербурга http: //mskdotnet. org/ http: //spbdotnet. org § В прошлом менеджер по продуктам и тимлид в Cezurity, Acronis, Luxoft, Boeing

>Зачем Win. Dbg мне?  Какой отладчик использовать, если нужно отлаживать расширение отладчика Visual Зачем Win. Dbg мне? Какой отладчик использовать, если нужно отлаживать расширение отладчика Visual Studio, отлаживающего другой процесс?

>Зачем он вам?  - Найти deadlock? - Легко* с Win. Dbg Зачем он вам? - Найти deadlock? - Легко* с Win. Dbg

>Зачем он вам? Зачем он вам?

>Плюсы Win. Dbg § Легкий отладчик, быстро запускается § Предоставляет больше данных для анализа Плюсы Win. Dbg § Легкий отладчик, быстро запускается § Предоставляет больше данных для анализа § Гибкая и автоматизируемая скриптами отладка кода § Вменяемый анализ дампов § Вменяемая отладка смешанного (mixed) кода

>Минусы Win. Dbg § Командная строка - долго не используешь, быстро забываешь § Ужасный Минусы Win. Dbg § Командная строка - долго не используешь, быстро забываешь § Ужасный GUI § Имеет странности

>Настройка Win. Dbg Настройка Win. Dbg

>Командная строка § Удобно использовать. cmdtree http: //www. wintellect. com/devcenter/jrobbins/a-cool-windbg-sos-hidden-feature Командная строка § Удобно использовать. cmdtree http: //www. wintellect. com/devcenter/jrobbins/a-cool-windbg-sos-hidden-feature

>Графический интерфейс https: //github. com/yuske/Dot. Next. Msk 2015 Графический интерфейс https: //github. com/yuske/Dot. Next. Msk 2015

>Отладочные символы 0: 000>. sympath Symbol search path is: <empty> Отладочные символы 0: 000>. sympath Symbol search path is:

>Отладочные символы 0: 000>. sympath+ c: mysymbols Symbol search path is: c: mysymbols 0: Отладочные символы 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 Отладочные символы > 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 https: //msdn. microsoft. com/en- us/library/windows/hardware/ff 558829(v=vs. 85). aspx

>Отображение переменных 0: 000> dx /? DX [-r[#]] <expr> - display C++ expression using Отображение переменных 0: 000> dx /? DX [-r[#]] - display C++ expression using extension model (e. g. : Nat. Vis) DX [-r[#]] [, ] - display C++ expression using extension model (e. g. : Nat. Vis) in a specified format https: //msdn. microsoft. com/en- us/library/windows/hardware/dn 936815(v=vs. 85). aspx

mklink" src="https://present5.com/presentation/1/3418493_437787583.pdf-img/3418493_437787583.pdf-15.jpg" alt=">Отображение переменных > cd "C: Program Files (x 86)Windows Kits10 Debuggersx 86" > mklink" /> Отображение переменных > cd "C: Program Files (x 86)Windows Kits10 Debuggersx 86" > mklink /d Visualizers "C: Program Files (x 86) Microsoft Visual Studio 14. 0Common 7Packages DebuggerVisualizers“

>Расширения для отладки. NET кода § SOS http: //bit. ly/1 PUof. K 9 § Расширения для отладки. NET кода § SOS http: //bit. ly/1 PUof. K 9 § SOSEX http: //www. stevestechspot. com/ § Net. Ext http: //netext. codeplex. com/ § PSSCOR 2/PSSCOR 4 http: //bit. ly/1 k. OJLEV; http: //bit. ly/1 NKan 0 G § SDbg. Ext 2 https: //github. com/steveniemitz/SDbg. Ext 2

>Сценарии отладки Сценарии отладки

>Загрузка расширений 0: 000> . loadby sos. dll clr 0: 000> . load sosex Загрузка расширений 0: 000> . loadby sos. dll clr 0: 000> . load sosex 0: 000> . load netext 0: 000> . load psscor 4 0: 000> . load spt

>Исследование метаданных § Type Handle § Sync Block Table § Method Descriptors § Modules Исследование метаданных § Type Handle § Sync Block Table § Method Descriptors § Modules § Metadata Tokens § EEClass

>Исследование метаданных !Dump. Domain [<domain address>] !Dump. Module [-mt] <Module address> !Dump. Assembly <assembly Исследование метаданных !Dump. Domain [] !Dump. Module [-mt] !Dump. Assembly !Dump. Class !Dump. MT [-MD] !IP 2 MD !Dump. MD !Name 2 EE

>Исследование метаданных 0: 000> !mx Demo!*Thread* App. Domain 724 c 6770 (Shared Domain) -------------------------- Исследование метаданных 0: 000> !mx Demo!*Thread* App. Domain 724 c 6770 (Shared Domain) -------------------------- App. Domain 0085 dc 28 (Demo. exe) -------------------------- module: Demo class: Demo. Program Start. Thread. A() Start. Thread. B()

>Управление точками останова 0: 004> !name 2 ee Bar. exe Bar. App. Foo Module: Управление точками останова 0: 004> !name 2 ee Bar. exe Bar. App. Foo Module: 00112 d 8 c (Bar. exe) Token: 0 x 06000002 Method. Desc: 00113178 Name: Bar. App. Foo(Int 32, Int 32) JITTED Code Address: 003 e 0178 0: 004> bp 003 e 0178

>Управление точками останова 0: 004> !name 2 ee Bar. exe Bar. App. Foo Module: Управление точками останова 0: 004> !name 2 ee Bar. exe Bar. App. Foo Module: 00112 d 8 c (Bar. exe) Token: 0 x 06000002 Method. Desc: 00113178 Name: Bar. App. Foo(Int 32, Int 32) Not JITTED yet. Use !bpmd -md 00113178 to break on run. 0: 004> !bpmd –md 00113178 Method. Desc = 00113178 Adding pending breakpoints. . .

>Управление точками останова 0: 004> !bpmd Bar. exe Bar. Comparer`1. Greater. Than Found 1 Управление точками останова 0: 004> !bpmd Bar. exe Bar. Comparer`1. Greater. Than Found 1 methods. . . Method. Desc = 001 a 3188 Adding pending breakpoints. . .

>Управление точками останова !mbm <Type/Method Filter> [ILOffset] [Options] !mbp <Source. File> <n. Line. Num> Управление точками останова !mbm [ILOffset] [Options] !mbp [Col. Num] [Options]

>Исследование. NET Framework Исследование. NET Framework

>Операции с потоками Операции с потоками

>Операции с потоками 0: 004> !threads Thread. Count:  3 Unstarted. Thread: 0 Background. Операции с потоками 0: 004> !threads Thread. Count: 3 Unstarted. Thread: 0 Background. Thread: 1. . . ID OSID Thread. OBJ State. . . Apt Exception 0 1 316 c 0109 b 6 e 0 202 a 020 MTA 5 2 1 f 88 010 a 8 e 98 2 b 220 MTA (Finalizer) 6 3 1968 010 c 8960 202 b 020 MTA

>Операции с потоками 0: 004> !Clr. Stack OS Thread Id: 0 x 316 c Операции с потоками 0: 004> !Clr. Stack OS Thread Id: 0 x 316 c (0) Child SP IP Call Site 0018 ec 34 77 b 96 e 3 c [Helper. Method. Frame: 0018 ec 34] System. Threading. Thread. Sleep. Internal(Int 32) 0018 ecb 8 70 bebfca System. Threading. Thread. Sleep(Int 32) 0018 ecc 0 00 f 30740 Demo. Program. Sample. B() [C: DemoProgram. cs @ 66] 0018 ed 14 00 f 304 ed Demo. Program. Main(System. String[]) [C: DemoProgram. cs @ 17]

>Операции с потоками !Dump. Stack [-ee] !mk [Frame. Count] [-l] [-p] [-a] !EEStack –short Операции с потоками !Dump. Stack [-ee] !mk [Frame. Count] [-l] [-p] [-a] !EEStack –short [-ee]

>Поиск deadlock’ов Поиск deadlock’ов

>Исследование объектов в памяти 0: 000> dd  0 x 01 e 06 bec Исследование объектов в памяти 0: 000> dd 0 x 01 e 06 bec 001 c 30 b 0 00000000 01 e 06 bfc 80000000 790 fd 8 c 4 00000013 01 e 06 c 0 c 003 a 0078 0030007 b 002 c 007 d 00790020 01 e 06 c 1 c 007 b 003 a 007 d 0031 0020002 c 003 a 007 a 01 e 06 c 2 c 0032007 b 0000007 d 00000000 01 e 06 c 3 c 00000000 01 e 06 c 4 c 00000000 01 e 06 c 5 c 00000000

>Исследование объектов в памяти 0: 000> !Dump. Obj 0 x 01 c 56 bec Исследование объектов в памяти 0: 000> !Dump. Obj 0 x 01 c 56 bec Name: Bar. App Method. Table: 002130 b 0 EEClass: 00211240 Size: 20(0 x 14) bytes (C: samplesBar. exe). . .

>Исследование объектов в памяти !Dump. VC <Method. Table address> <Address> !Dump. Array [-start <start. Исследование объектов в памяти !Dump. VC

!Dump. Array [-start ] [-length ] [-details] [-nofields]

>Исследование объектов в памяти 0: 000>!mdt 02772 f 90 -r 02772 f 90 (Demo. Исследование объектов в памяти 0: 000>!mdt 02772 f 90 -r 02772 f 90 (Demo. Bar) array: 02772 ff 8 (System. Int 32[], Elements: 4) list: 02773038 (. List`1[[System. String, mscorlib]]) _items: 0277305 c (System. String[], Elements: 4) _size: 0 x 2 (System. Int 32) _version: 0 x 2 (System. Int 32) _sync. Root: NULL (System. Object) k__Backing. Field: (Demo. Point) VALTYPE

>Исследование объектов в памяти !Dump. Heap [-stat] [-strings] [-short] [-min <size>] [-max <size>] [-thinlock] Исследование объектов в памяти !Dump. Heap [-stat] [-strings] [-short] [-min ] [-max ] [-thinlock] [-start. At. Lower. Bound] [-mt ] [-type ][start [end]] !Dump. Runtime. Types !strings !EEHeap [-gc] [-loader] !Traverse. Heap [-xml] !Verify. Heap

>Исследование объектов в памяти 0: 006> !Heap. Stat -iu Heap Gen 0  Исследование объектов в памяти 0: 006> !Heap. Stat -iu Heap Gen 0 Gen 1 Gen 2 LOH Heap 0 188636 6297752 256636732 17592 Free space: Heap 0 12 116 6916 80 Unrooted objects: Heap 0 170476 6297584 256616572 0

>Исследование объектов в памяти !GCRoot [-nostacks] <Object address> !gcgen <hex. Object. Addr> !dumpgen <int. Исследование объектов в памяти !GCRoot [-nostacks] !gcgen !dumpgen [-free] [-stat] [-type ] [-nostrings]

>Анализ memory leak’ов Анализ memory leak’ов

>Отладка web-приложений !whttp – список Http. Context обектов !wservice – список WCF service обектов Отладка web-приложений !whttp – список Http. Context обектов !wservice – список WCF service обектов !wsocket – информация о сокетах !Dump. ASPNet. Requests – список потоков с Http. Context !Dump. Sql. Connection. Pools – информация о всех Sql сonnection pools

>Дополнительные инструменты Дополнительные инструменты

>dn. Spy https: //github. com/0 xd 4 d/dn. Spy dn. Spy https: //github. com/0 xd 4 d/dn. Spy

>CLR MD (Microsoft. Diagnostics. Runtime. dll) http: //msk 2015. dotnext. ru/talks/goldshtein CLR MD (Microsoft. Diagnostics. Runtime. dll) http: //msk 2015. dotnext. ru/talks/goldshtein

>Py. Kd http: //2015. phdays. ru/program/40602 Py. Kd http: //2015. phdays. ru/program/40602

>Что дальше? Что дальше?

>Книги http: //amzn. to/21 TWSWd  http: //amzn. to/1 NK 2 bl 0 Книги http: //amzn. to/21 TWSWd http: //amzn. to/1 NK 2 bl 0 http: //amzn. to/1 Qz. ZId. R

>Блоги § Sasha Goldshtein http: //blogs. microsoft. co. il/sasha/ § John Robbins http: //www. Блоги § Sasha Goldshtein http: //blogs. microsoft. co. il/sasha/ § John Robbins http: //www. wintellect. com/devcenter/jrobbins § Ere. TIk's Box http: //eretik. omegahg. com/Win. Dbg. html

>Цитата Цитата

>Спасибо за внимание! Михаил Щербаков Independent Consultant intelliegg. com spbdotnet. org github. com/yuske @yu Спасибо за внимание! Михаил Щербаков Independent Consultant intelliegg. com spbdotnet. org github. com/yuske @yu 5 k 3