Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CoreCLR
Search
Siarhei Shchahrykovich
August 23, 2016
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CoreCLR
https://github.com/shchahrykovich/ms/
Siarhei Shchahrykovich
August 23, 2016
More Decks by Siarhei Shchahrykovich
See All by Siarhei Shchahrykovich
Debugging as a process - DotNext 2018 Piter
shchahrykovich
0
95
5 commandments of pdb
shchahrykovich
0
45
ETW for .Net developers - DotNext 2016 Piter
shchahrykovich
0
31
ETW. Tracing done right
shchahrykovich
1
170
WinDbg by examples
shchahrykovich
0
350
Other Decks in Programming
See All in Programming
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
270
XHTMLが残したもの
yosuke_furukawa
PRO
2
670
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
130
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
660
Webの地図
yosuke_furukawa
PRO
6
4k
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
140
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
120
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
130
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
130
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
130
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
Designing for humans not robots
tammielis
254
26k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Spectacular Lies of Maps
axbom
PRO
1
990
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Designing for Performance
lara
611
70k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Navigating Team Friction
lara
192
16k
Transcript
CoreCLR: Brave new world Сергей Щегрикович 1
Про меня • Щегрикович Сергей •
[email protected]
• @shchegrikovich 2
3
CoreCLR: Brave new world или Каждый может быть CoreCLR хакером
4
Про что я буду рассказывать • Как C# разработчику изучать
CoreCLR • Как дебажить CoreCLR 5
Про что я НЕ буду рассказывать • Зачем Вам это
надо • Как это можно использовать 6
7 Exploring the CoreCLR Inside Silverlight, 2009
git clone https://github.com/dotnet/coreclr 8
И? 9
#0 Читаем исходный код 10
11
Заходит C# разработчик в бар… 12 А где файл проекта?
13
14 13 files
15
16
17
#1 Читаем коммиты 18
19
20
21
Как читать исходники? 22 Julia Evans /*==================================LENGTH=================================== */ FCIMPL1(INT32, COMString::Length,
StringObject* str) { FCALL_CONTRACT; FC_GC_POLL_NOT_NEEDED(); if (str == NULL) FCThrow(kNullReferenceException); FCUnique(0x11); return str->GetStringLength(); } FCIMPLEND
Как читать исходники? 23 /*==================================LENGTH=================================== */ FCIMPL1(INT32, COMString::Length, StringObject* str)
{ FCALL_CONTRACT; FC_GC_POLL_NOT_NEEDED(); if (str == NULL) FCThrow(kNullReferenceException); FCUnique(0x11); return str->GetStringLength(); } FCIMPLEND Julia Evans
Как читать исходники? 24 /*==================================LENGTH=================================== */ FCIMPL1(INT32, COMString::Length, StringObject* str)
{ if (str == NULL) FCThrow(kNullReferenceException); return str->GetStringLength(); } Julia Evans
Документация • Rotor • Book of the Runtime 25
#2 Дебаггинг 26
27
28
29
30
Демо • HelloWorld • MethodImplOptions.InternalCall • Finalizer 31
Как работает дебагер? Debug Port Object Debugger Debuggee (Target)
Как работает дебагер в .Net? .Net app (target) WinDbg (debugger)
sos.dll Debugger RCT Execution Engine mscordaccore.dll
Как дебажить SOS? .Net app (target) WinDbg (debugger) sos.dll Debugger
RCT Execution Engine mscordaccore.dll WinDbg2 (debugger)
Демо • Дебажим дебагер • Недокументированные команды SOS 35
Что еще посмотреть? • https://github.com/dotnet/llilc LLVM based compiler for .NET
Core LLVM набор утилит для разработки front-end и back-end • https://github.com/dotnet/corefxlab LowAllocationWebServer MultiValueDictionary • https://github.com/Microsoft/clr-samples Profiling API Samples for CoreCLR 36
Q&A 37 // Happy debugging :) #define TRUE false Щегрикович
Сергей
[email protected]
@shchegrikovich