.NET рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рд░рдирдЯрд╛рдЗрдо рд╣реИ ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ ( рдкрд░рд┐рдЪрдп рд╕реЗ рд▓реЗрдХрд░ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо (рд╕реАрдПрд▓рдЖрд░), 2007 :
рд░рдирдЯрд╛рдЗрдо рдХрдИ рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:
- рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЬреЛ рджреВрд╕рд░реЛрдВ рдХреЗ рдЙрдкрдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣;
- рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдФрд░ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рд╕реБрд░рдХреНрд╖рд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛;
- рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╕рдорд░реНрдердиред
- рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп - рдореБрдЦреНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдХрдИ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- AppDomains рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛
- рдЖрд╡реЗрджрди рд╕рдВрд░рдХреНрд╖рдг рдФрд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЕрд▓рдЧрд╛рд╡ред
- рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рднреА рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдореВрд▓ рд╕реАрдПрд▓рдЖрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВред рдЗрдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг;
- рдбрд┐рдмрдЧрд┐рдВрдЧ / рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ;
- рдмрд╛рддрдЪреАрдд рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ред
рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдореБрдЦреНрдп рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ ' рдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ ' рдХреЗ рдХрд╛рд░рдг рд╕реВрдЪреА рдореЗрдВ рд╣реИрдВред

рдмрд╛рдХреА рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреЛрд░ рд╕реАрдПрд▓рдЖрд░ рдореЗрдВ рдирд┐рдЧрд░рд╛рдиреА , рдЕрд╡рд▓реЛрдХрди, рдФрд░ рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдХреНрдпрд╛ рдореМрдЬреВрдж рд╣реИрдВ, рд╡реЗ рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдирд┐рджрд╛рди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ рд╕реАрдПрд▓рдЖрд░ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ (ETW) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдРрд╕реА рдХрдИ рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдПрд▓рдЖрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ:
- рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ (рдЬреАрд╕реА);
- рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди;
- рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбреЛрдореЗрди;
- рдЕрд╡рд░реБрджреНрдз рд╣реЛрдиреЗ рдкрд░ рдзрд╛рдЧреЗ рдФрд░ рд╕рдВрдШрд░реНрд╖ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ;
- рд╕рд╛рде рд╣реА рдХрдИ рдЕрдиреНрдпред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ AppDomain рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣рд╛рдВ рдШрдЯрдирд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ , рдФрд░ рдпрд╣рд╛рдВ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рд╣реИ ред
рдкреВрд░реНрдг рджреГрд╢реНрдп
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ .NET рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреНрд░реЗрд╕ рд╕рд┐рд╕реНрдЯрдо (ETW) рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЙрддреНрдХреГрд╖реНрдЯ PerfView рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдЗрди рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╡реАрдбрд┐рдпреЛ рдпрд╛ PerfView рдХреА рдЗрд╕ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ: рдЕрдВрддрд┐рдо .NET рдкреНрд░рджрд░реНрд╢рди рдЯреВрд▓ ред PerfView рдХреЛ рдЕрдореВрд▓реНрдп рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Microsoft рдЗрдВрдЬреАрдирд┐рдпрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдо рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪрд╛
рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдирд╛рдо рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдИрдЯреАрдбрдмреНрд▓реНрдпреВ рдореЗрдВ рдИрд╡реЗрдВрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ .NET рдХреЛрд░ рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд░реНрд▓реНрдб рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░рдлреЗрдХреНрдЯ рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (LTTng рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓, рдЬрд┐рд╕реЗ рдкрд░рдлреЙрдХреНрд▓реЗрдХреНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреНрд╖рдорддрд╛ рдФрд░ рдПрдХ рд╕рдореГрджреНрдз рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ( рдлреНрд▓реЗрдореЛрдЧреНрд░рд╛рдл рд╕рд╣рд┐рдд) рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЕрднреА рднреА рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд .NET рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ:
рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рджреВрд╕рд░рд╛ рд▓рд┐рдВрдХ рдирдП EventPipe рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ .NET Core (EventSources & EventListeners рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд) рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкреНрд░рджрд░реНрд╢рди рдирд┐рдЧрд░рд╛рдиреА рдбрд┐рдЬрд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдПрдХрд▓ рд╕реНрдерд╛рди рдмрдирд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рд╕реАрдПрд▓рдЖрд░ рдирд┐рджрд╛рди рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЛ рднреЗрдЬреЗрдЧрд╛ред рдлрд┐рд░ рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЙрдЧрд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ ETW, LTTng рдФрд░ BPF рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдУрдПрд╕ рдпрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЬрд┐рд╕ рдкрд░ рд╕реАрдПрд▓рдЖрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рднрд┐рдиреНрди рд▓реЙрдЧрд┐рдВрдЧ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, .NET рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдИрд╡реЗрдВрдЯрд┐рдВрдЧ рдбрд┐рдЬрд╝рд╛рдЗрди рджреЗрдЦреЗрдВ ред
EventPipes рдкреНрд░рдЧрддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рджрд░реНрд╢рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд 'EventPipe' рдореБрджреНрджреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред
рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛
рдЕрдВрдд рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рд╣реИрдВ:
рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕рд░рд▓ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдирд┐рджрд╛рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ .NET рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ HTTP рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
рдЕрдиреНрдп рдПрдкреАрдЖрдИ
- рд╕рд┐рджреНрдзрд╛рдВрдд 1: рд╕рд░рд▓ рд░реВрдкрд░реЗрдЦрд╛: рд╕рдордп рдЕрд╡рдзрд┐ X рдХреЗ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░реЗрдВ рдФрд░ рдЯреНрд░реЗрд╕ рд▓реМрдЯрд╛рдПрдВред
- рд╕рд┐рджреНрдзрд╛рдВрдд 1: рдЙрдиреНрдирдд рд░реВрдкрд░реЗрдЦрд╛: рдЯреНрд░реИрдХрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдирд╛ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде)
- рд╕рд┐рджреНрдзрд╛рдВрдд 1: рдЙрдиреНрдирдд рд░реВрдкрд░реЗрдЦрд╛: рдкреВрд░реНрдг рдЯреНрд░реИрдХрд┐рдВрдЧ (рдЗрд╕ рдХреЙрд▓ рдХрд╛ рдЙрддреНрддрд░ рдЯреНрд░реЗрд╕ рд╣реА рд╣реЛрдЧрд╛)ред
- рд╕рд┐рджреНрдзрд╛рдВрдд 2: рд╕рднреА EventCounters рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ EventCounter рд╕реЗ рдЬреБрдбрд╝реЗ рдЖрдВрдХрдбрд╝реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
HTML рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреГрд╖реНрда
- рд╕рд┐рджреНрдзрд╛рдВрдд 1: рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рд╕рднреА рдвреЗрд░ рдХрд╛ рдПрдХ рдкрд╛рдареАрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ред
- рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рддрд╛ рд╣реИред
- рд╕рд┐рджреНрдзрд╛рдВрдд 2: EventCounters рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (рд╕рдВрднрд╡рддрдГ рдПрдХ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╕рд╛рде) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред
- рдореМрдЬреВрджрд╛ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- UNSOLVED PROBLEM: рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ EventCounters рдХреЛ рдЧрд┐рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рд╣реИрдВред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рд░реВрдкрд░реЗрдЦрд╛ рдирд┐рдпрдВрддреНрд░рдХ (рдкреАрдкреАрд╕реА?) рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕реЗ рд╕реАрдПрд▓рдЖрд░ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ .NET рдХреЛ рдХрдИ рд▓рд╛рдн рджреЗрдЧрд╛ред рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдиреНрдп рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реИ ред
рд░реВрдкрд░реЗрдЦрд╛
рдПрдХ рдФрд░ рдкреНрд░рднрд╛рд╡реА рдЙрдкрдХрд░рдг рд╣реИ рдХрд┐ рд╕реАрдПрд▓рдЖрд░ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдПрдкреАрдЖрдИ рд╣реИред рдпрд╣ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ) рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдЯреВрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рд░рдирдЯрд╛рдЗрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрд▓рдмреИрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдпрджрд┐ рд╕рдХреНрд░рд┐рдп рд╣реИрдВ:
- рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛рдПрдВ;
- рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ;
- рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб / рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ ред
рдмреАрдУрдЯреАрдЖрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдкреЗрдЬ рд╕реЗ рдЪрд┐рддреНрд░ - рдЕрд╡рд▓реЛрдХрди
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рдкреНрд░рднрд╛рд╡реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдЙрди рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рд░ рдмрд╛рд░ .NET рд╡рд┐рдзрд┐ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд╣реА рд╣реЛ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рд╕реЗред рдЗрди рдХреЙрд▓рдмреИрдХ рдХреЛ рдПрдВрдЯрд░ / рд▓реАрд╡ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдирд╛рдо рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдФрд░ рд╕реАрдкреАрдпреВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рд┐рдВрдЧ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ ред рдпрд╣ рднреА рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдПрдХ COM рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ C / C ++ рдХреЛрдб рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди C # / F # / VB.NET рд╕реЗ рдирд╣реАрдВред
рджреВрд╕рд░реЗ, рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╕реЗрдЯрд┐рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА () рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА .NET рд╡рд┐рдзрд┐ рдХреЗ рдЖрдИрдПрд▓ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ ред рдпрд╣ рдПрдкреАрдЖрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрд╢рд▓ рд╣реИред рдпрд╣ рдХрдИ APM .NET рдЯреВрд▓реНрд╕ рдХреЛ рдЕрдВрдбрд░рд▓рд╛рдЗ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдореЗрд░реА рдкреЛрд╕реНрдЯ рд╕реЗ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдХреИрд╕реЗ рдореЙрдХ рдХрд░реЗрдВ ред
ICorProfiler API
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪрд╛рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╕рдВрд▓рдЧреНрди рдкреГрд╖реНрда рдкрд░ rejit рдХреА рдЕрдиреБрдорддрд┐ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЛ рджреЗрдЦреЗрдВ (рджреЗрдЦреЗрдВ ReJIT: ReJIT рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВ )ред
рд╕рднреА рд░реВрдкрд░реЗрдЦрд╛ рдПрдкреАрдЖрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреА рдПрдХ рдкреВрд░реА рдкрд░рд┐рднрд╛рд╖рд╛ \ vm \ inc \ corprof.idl рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ( рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛ рджреЗрдЦреЗрдВ)ред рдпрд╣ 2 рддрд╛рд░реНрдХрд┐рдХ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдПрдХ рднрд╛рдЧ Profiler -> рд░рдирдЯрд╛рдЗрдо рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ (EE) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬрд┐рд╕реЗ ICorProfilerInfo
рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
// , ICorProfilerInfo*, // . , DLL // , // .
рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рджреВрд╕рд░рд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЙрд▓рдмреИрдХ рд╣реИ рд░рдирдЯрд╛рдЗрдо -> рдкреНрд░реЛрдлрд╛рдЗрд▓рд░, рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ICorProfilerCallback
рддрд╣рдд рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
// // ICorProfilerCallaback* . // , EEToProfInterfaceImpl.
рдпреЗ рдХреЙрд▓рдмреИрдХ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ API .NET OS рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА OS рдФрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: рд▓рд┐рдирдХреНрд╕ рдкрд░ ELT рдХреЙрд▓ рд╕реНрдЯрдм рдореБрджреНрджреЛрдВ ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП CoreCLR рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ API рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦреЗрдВред
рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╡реАред рдбрд┐рдмрдЧрд┐рдВрдЧ
рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕рдордЭрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ .NET рд░рдирдЯрд╛рдЗрдо ( рд╕реАрдПрд▓рдЖрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдмрдирд╛рдо рд╕реАрдПрд▓рдЖрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдкреАрдЖрдИ рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рд╕реАрдПрд▓рдЖрд░ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░
рдбрд┐рдмрдЧрд┐рдВрдЧ
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреВрдЫрд╛ "рдЖрдк .NET рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреИрд╕реЗ рдбрд┐рдмрдЧ рдХрд░рддреЗ рд╣реИрдВ" рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрддреНрддрд░ рдорд┐рд▓реЗ ред рдЙрд╕реА рд╕рдордп, рдЙрддреНрддрд░ рдореЗрдВ рдЙрдкрдХрд░рдг рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рдЕрдЪреНрдЫреА рд╕реВрдЪреА рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд╕рд╛рднрд╛рд░ #LazzWeb
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:
рд╕реАрдПрд▓рдЖрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрдмрдВрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рдлрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЗрд╕ рдорд╣рд╛рди рдкреЛрд╕реНрдЯ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рддреАрди рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВ рджреЗрд╢реА-рдбреАрдмрдЧрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? :
- рдЕрдирд╡рд╛рдВрдЯреЗрдб рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░ рдЕрдореВрд░реНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ IL-рдХреЛрдб рд╕реНрддрд░ рдкрд░ рдЕрдореВрд░реНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
- рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдбрд┐рдмрдЧрд░ рдХреЛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХ (GC) рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, CLR рдХреЛ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдбрд┐рдмрдЧрд┐рдВрдЧ API рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ ICorDebug
рдирд╛рдо рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдмрдЧрд┐рдВрдЧ рдкрд░рд┐рджреГрд╢реНрдп (рд╕реНрд░реЛрдд: BOTR) рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
ICorDebug API
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг CLR рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп :
.Net рдореЗрдВ рд╕рднреА рдбреАрдмрдЧрд┐рдВрдЧ рд╕рдорд░реНрдерди рдХреЛ dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо Dac рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ (рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░ mscordacwks.dll
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╣рдорд╛рд░реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбрд┐рдмрдЧрд┐рдВрдЧ API ( ICorDebug
) рдФрд░ рджреЛ рдирд┐рдЬреА рдбреАрдмрдЧрд┐рдВрдЧ API: SOS-Dac API рдФрд░ IXCLR рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рддрддреНрд╡ рд╣реИред
рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рд╣рд░ рдХреЛрдИ рд╣рдорд╛рд░реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ ICorDebug
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, ICorDebug
рдХрдИ ICorDebug
рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ рдЬреЛ рдЯреВрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреЗ рд╕реБрдзрд╛рд░ рдХреЗрд╡рд▓ CL.v.next рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди CLR рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдирд╣реАрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрд░реИрд╢ рдбрдВрдк рдбреАрдмрдЧрд┐рдВрдЧ рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ CLR v4 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде ICorDebug
API рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рд╣рд░ рдХреЛрдИ рдЬреЛ CLR v2 рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреНрд░реИрд╢ рдбрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ ICorDebug
рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗрдЧрд╛ред
(рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП SOS рдФрд░ ICorDebug рджреЗрдЦреЗрдВ)
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, ICorDebug
API рдХреЛ 70 рд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд┐рди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, ICorDebug рдХрд╛ рд╡рд┐рднрд╛рдЬрди рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рдпрд╣ рд╕реВрдЪреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рдЧрдИ рд╣реИред
- рд╢реАрд░реНрд╖ рд╕реНрддрд░ : ICorDebug + ICorDebug2 - рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ ICorDebugProcess рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
- рдХреЙрд▓рдмреИрдХ : рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдбреАрдмрдЧрд┐рдВрдЧ рдИрд╡реЗрдВрдЯреНрд╕ рдбреАрдмрдЧрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ : рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдпрд╣ рд╕реЗрдЯ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- рдХреЛрдб / рдкреНрд░рдХрд╛рд░ рдирд┐рд░реАрдХреНрд╖рдг : рдЬреНрдпрд╛рджрд╛рддрд░ рд╕реНрдерд┐рд░ рдкреАрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╣реИрдВред
- рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг : рдзрд╛рдЧреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ (F9) рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдХреЛрдб (F11 рдХреЛрдб рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐, F10 рдХреЛрдб рдмрд╛рдЗрдкрд╛рд╕, S + F11 рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ) рдХреА рдХреНрд╖рдорддрд╛ред ICorDebug рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
- рдереНрд░реЗрдбреНрд╕ + рдХреЙрд▓ рд╕реНрдЯреИрдХреНрд╕ : рдХреЙрд▓ рд╕реНрдЯреИрдХ рдбреАрдмрдЧрд░ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд┐рд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╣реИрдВред рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ICorDebug рдХреЗрд╡рд▓ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдЖрдк рдХреЗрд╡рд▓ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рд╕реНрдЯреИрдХ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╡рд╕реНрддреБ рдирд┐рд░реАрдХреНрд╖рдг : рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд░реАрдХреНрд╖рдг рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдбреАрдмрдЧ рдХрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдорд╡реАрдкреА рд╡рд┐рдзрд┐ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдкреАрдЖрдИ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде, рдбреАрдмрдЧрд┐рдВрдЧ рдПрдкреАрдЖрдИ рд╕рдкреЛрд░реНрдЯ рдХрд╛ рд╕реНрддрд░ рдУрдПрд╕ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреНрд╡рд╛рд░рд╛ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд╕реНрдд 2018 рддрдХ, рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рдирд┐рджрд╛рди рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХреЛрдИ рд▓рд┐рдирдХреНрд╕ рдПрдЖрд░рдПрдо рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд▓рд┐рдирдХреНрд╕ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдПрд▓рдПрд▓рдбреАрдмреА рдХреЗ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдкрд░ рдбреАрдмрдЧрд┐рдВрдЧ .NET рдХреЛрд░ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реЗ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рджреЗрдЦреЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд .NET рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рдЖрдк рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ ICorDebug
API C # рдореЗрдВ рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ CLRMD рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдореМрдЬреВрдж рд░реИрдкрд░реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдХреЙрд▓рдмреИрдХ (CLRMD рдкрд░ рдЕрдзрд┐рдХ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдПрд╕рдУрдПрд╕ рдФрд░ рдбреАрдПрд╕реА
BOTR рдкреЗрдЬ рдкрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрдВрдкреЛрдиреЗрдВрдЯ (DAC) рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдпрд╣ рд╕реАрдПрд▓рдЖрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрдЙрдЯ-рдСрдл-рдж-рдкреНрд░реЛрд╕реЗрд╕ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдЕрдВрджрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбрд┐рдмрдЧрд░ ( ICorDebug
рдорд╛рдзреНрдпрдо рд╕реЗ) рдпрд╛ 'рд╕рди рдСрдл рд╕реНрдЯреНрд░рд╛рдЗрдХ' (SOS) рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЪрд▓ рд░рд╣реЗ CLR рдЙрджрд╛рд╣рд░рдг рдпрд╛ рдореЗрдореЛрд░реА рдбрдВрдк рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рд╕рднреА рдЪрд▓ рд░рд╣реЗ рдзрд╛рдЧреЗ;
- рдвреЗрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛
- рдорд╢реАрди рдХреЛрдб рд╕рд╣рд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА;
- рд╡рд░реНрддрдорд╛рди рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ред
рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ : рдпрджрд┐ рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдЕрдЬреАрдм рдирд╛рдо рдХрд╣рд╛рдВ рд╕реЗ рдЖрдП рд╣реИрдВ рдФрд░ .NET рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рдмрдХ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЗрд╕ рдЙрддреНрддрд░ рдХреЛ рджреЗрдЦреЗрдВ ред
рдПрд╕рдУрдПрд╕ рдХрдорд╛рдВрдб рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ WinDBG рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рд╕реАрдПрд▓рдЖрд░ рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдЗрдП рджреЗрдЦреЗрдВ !HeapStat
, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдвреЗрд░ рдХреЗ рдЖрдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ .NET GC рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
(рдПрд╕рдУрдПрд╕ рд╕реЗ рд▓реА рдЧрдИ рдЫрд╡рд┐: рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХреБрдЫ рдирдП рдЖрджреЗрд╢ рд╣реИрдВ - HeapStat)
рдпрд╣рд╛рдБ рдХреЛрдб рдХреА рдПрдХ рдзрд╛рд░рд╛ рд╣реИ рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ SOS рдФрд░ DAC рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
- SOS рдкреВрд░реА рдЯреАрдо
!HeapStat
( рд▓рд┐рдВрдХ ) - рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди GC рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ
!HeapStat
рдореЗрдВ SOS рдХреЛрдб (рд▓рд┐рдВрдХ) - SOS рдлрд╝рдВрдХреНрд╢рди
GCHeapUsageStats(..)
, рдЬреЛ рдХрд╛рдо рдХрд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рдХрд░рддрд╛ рд╣реИ ( рд▓рд┐рдВрдХ ) - рд╕рд╛рдЭрд╛
DacpGcHeapDetails
рдбреЗрдЯрд╛ DacpGcHeapDetails
рдЬрд┐рд╕рдореЗрдВ GC рдвреЗрд░, рдмрд┐рдЯ рдорд╛рд╕реНрдХ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреАрдврд╝рд┐рдпреЛрдВ ( рд╕рдВрджрд░реНрдн ) рдЬреИрд╕реЗ рдореБрдЦреНрдп рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВред - DAC
GetGCHeapStaticData
рдлрд╝рдВрдХреНрд╢рди рдЬреЛ DacpGcHeapDetails
рд╕рдВрд░рдЪрдирд╛ ( рд▓рд┐рдВрдХ ) рдХреЛ рднрд░рддрд╛ рд╣реИ - рд╕рд╛рдЭрд╛
DacpHeapSegmentData
рдбреЗрдЯрд╛ DacpHeapSegmentData
рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ GC рдвреЗрд░ рдЦрдВрдб ( рд▓рд┐рдВрдХ ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ - DAC
GetHeapSegmentData(..)
, рдЬреЛ DacpHeapSegmentData
рд╕рдВрд░рдЪрдирд╛ ( рд▓рд┐рдВрдХ ) рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ
3 рдкрд╛рд░реНрдЯреА рдбрд┐рдмрдЧрд░реНрд╕
рдЪреВрдВрдХрд┐ Microsoft рдиреЗ рдбреАрдмрдЧрд┐рдВрдЧ рдПрдкреАрдЖрдИ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдбреЗрд╡рд▓рдкрд░реНрд╕ ICorDebug
рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдпрд╣рд╛рдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:
рдореЗрдореЛрд░реА рдбрдВрдк
рдЕрдВрддрд┐рдо рдмрд╛рдд рд╣рдо рдореЗрдореЛрд░реА рдбрдВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред .NET рд░рдирдЯрд╛рдЗрдо рдиреЗ рд╣рдореЗрд╢рд╛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдбрдВрдкрд┐рдВрдЧ рдореЗрдореЛрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдЕрдм рдЬрдм .NET рдХреЛрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрди рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрдкрдХрд░рдг рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп OS рдкрд░ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред
рдореЗрдореЛрд░реА рдбрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрд╕рдУрдПрд╕ рдФрд░ рдбреАрдПрд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╣реА, рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрднреА-рдХрднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Microsoft рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ dotnet symbol
CLI рдЙрдкрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ:
рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ (рдХреИрд░реЗрдХреНрдЯрд░ рд╕реЗрдЯ, рдореЙрдбреНрдпреВрд▓, рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрд░рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрд╕рдУрдПрд╕ рдФрд░ рдбреАрдПрд╕реА рдлрд╛рдЗрд▓реЗрдВ) рдХрд┐рд╕реА рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрд░ рдбрдВрдк, рдорд┐рдиреАрдбрдВрдк рдпрд╛ рдХрд┐рд╕реА рднреА рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдИрдПрд▓рдПрдл, рдордХреЛ, рд╡рд┐рдВрдбреЛрдЬ рдбреАрдПрд▓рдПрд▓, рдкреАрдбреАрдмреА рдФрд░ рдкреЛрд░реНрдЯреЗрдмрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред PDBред
рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рдЖрдк рдореЗрдореЛрд░реА рдбрдВрдк рдХрд╛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реАрдПрд▓рдЖрд░ рдПрдордбреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдиреЗ рдХрдИ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдХреА рдереАред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдПрдХ рд╕рд╣рдЬ рд╕реА # рдПрдкреАрдЖрдИ рдпреБрдХреНрдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрдореЛрд░реА рдбрдВрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ ClrHeap, GC Roots, CLR рдереНрд░реЗрдбреНрд╕, рд╕реНрдЯреИрдХ рдлреНрд░реЗрдореНрд╕ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реАрдПрд▓рдЖрд░ рдПрдордбреА рдПрд╕рдУрдПрд╕ рдХрдорд╛рдВрдб рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ (рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЗрд╕ рдкреЛрд╕реНрдЯ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
ClrMD рдкреНрд░рдмрдВрдзрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗрд╡рд▓ CLR рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд API рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпреЗ рдПрдкреАрдЖрдИ рдирд┐рджрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рдкреНрд░рд▓реЗрдЦрд┐рдд рд░рд┐рд▓реАрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рд╕реАрдПрд▓рдЖрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред ClrMD рдЗрди рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдбрд┐рдмрдЧрд┐рдВрдЧ API рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдЖрд╕рд╛рди-рдЙрдкрдпреЛрдЧ, рдкреНрд░рдмрдВрдзрдиреАрдп рдЖрд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
