Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CoreCLR
Search
Siarhei Shchahrykovich
August 23, 2016
Programming
0
100
CoreCLR
https://github.com/shchahrykovich/ms/
Siarhei Shchahrykovich
August 23, 2016
Tweet
Share
More Decks by Siarhei Shchahrykovich
See All by Siarhei Shchahrykovich
Debugging as a process - DotNext 2018 Piter
shchahrykovich
0
92
5 commandments of pdb
shchahrykovich
0
32
ETW for .Net developers - DotNext 2016 Piter
shchahrykovich
0
27
ETW. Tracing done right
shchahrykovich
1
160
WinDbg by examples
shchahrykovich
0
320
Other Decks in Programming
See All in Programming
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
230
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
120
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
350
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
520
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
2
230
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
280
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
170
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.5k
Railsの気持ちを考えながらコントローラとビューを整頓する/tidying-rails-controllers-and-views-as-rails-think
moro
4
370
手戻りゼロ? Spec Driven Developmentとは@KAG AI week
tmhirai
1
160
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
0
160
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
320
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
99
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
80
Everyday Curiosity
cassininazir
0
150
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Deep Space Network (abreviated)
tonyrice
0
86
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
240
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
620
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Darren the Foodie - Storyboard
khoart
PRO
3
2.7k
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