рдкреНрд░рддреНрдпреЗрдХ .net рдПрдкреНрд▓реАрдХреЗрд╢рди рдореЗрдВ рддреАрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рд╣реЛрддреА рд╣реИ

рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рджреЛрд╕реНрдд рд╕реЗ рдорд┐рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рджрд┐рдЦрд╛рдИред рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЗрдВ .net рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореЗрдореЛрд░реА рдбрдВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдФрд░ рдЕрдиреНрдп рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рддрд▓рд╛рд╢ рдХреА рдФрд░ рдореБрдЭреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХрд┐рд╕реА рднреА .net рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдкрд░реНрдпрд╛рд╡рд░рдг рддреАрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХреЛ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдХреНрдпреЛрдВ?

рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдмрдирд╛рдпрд╛:

 using System; namespace HelloWorld { class Program { static void Main() { Console.Write("Hello world!"); Console.ReadKey(); } } } 


рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдпрд╣рд╛рдВ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЕрдм рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд┐рди рдЯреВрд▓реНрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд╣рдореЗрдВ WinDbg рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ (pdb рдлрд╝рд╛рдЗрд▓): рдлрд╝рд╛рдЗрд▓ -> рдкреНрд░рддреАрдХ рдлрд╝рд╛рдЗрд▓ рдкрде рдФрд░ рд╣рдорд╛рд░реА .pdb рдлрд╝рд╛рдЗрд▓ HelloWorld.pdb рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдЕрдиреНрдп рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рдПрдВ рдФрд░ Symbol File Path рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ

D:\WORK\Projects\Own\HelloWorld\HelloWorld\bin\Debug; SRV*D:\Temp\Symbols*http://msdl.microsoft.com/download/symbols

рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВ (рдпрджрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ, рдлрд┐рд░ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдирд╣реАрдВ) рдФрд░ WinDbg рдореЗрдВ рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ: рдлрд╝рд╛рдЗрд▓-> рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ

рдЫрд╡рд┐

рд╣рдо рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 .loadby sos mscorwks 


sos.dll рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред

рдЪрд▓реЛ рдореЗрдореЛрд░реА рдХреЛ рдбрдВрдк рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 .dump /ma D:\Temp\HelloWorld.dmp 


рдЖрдк рдбрд┐рдмрдЧ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ: рдбреАрдмрдЧ -> рдбреАрдмрдЧрд┐рди рдХреЛ рд░реЛрдХреЗрдВ

рдФрд░ рд╣рдорд╛рд░реА рдореЗрдореЛрд░реА рдбрдВрдк рдЦреЛрд▓реЗрдВ : рдлрд╝рд╛рдЗрд▓ -> рдХреНрд░реИрд╢ рдбреИрдо рдЦреЛрд▓реЗрдВ рдФрд░ рд╣рдорд╛рд░рд╛ HelloWorld.dmp рдЪреБрдиреЗрдВ

рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдбрдВрдк рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ:

 !dumpheap -type Exception 


рдФрд░ рд╣рдо рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдЕрдкрд╡рд╛рдж рд╣реИрдВ:

 7093fd68 1 84 System.ExecutionEngineException 7093fd1c 1 84 System.StackOverflowException 7093fcd0 1 84 System.OutOfMemoryException 


рдЫрд╡рд┐

рдирд┐рд╖реНрдХрд░реНрд╖

рдЗрди рддреАрди рдЕрдкрд╡рд╛рджреЛрдВ ( ExecutionEngineException, StackOverflowException OutOfMemoryException ) рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреИрд╕реЗ рдХрд┐ рдЬрдм рдЖрдк рдореЗрдореЛрд░реА рд╕реЗ рдмрд╛рд╣рд░ рднрд╛рдЧ рдЧрдП рдереЗ рдФрд░ рдХреЛрдИ OutOfMemory рдЕрдкрд╡рд╛рдж OutOfMemory рдлреЗрдВрдХрдиреЗ рдореЗрдВ OutOfMemory рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдПрдХ рдФрд░ OOM рдЕрдкрд╡рд╛рдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реА рддрд░рд╣, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╣реИ, рддреЛ рдЖрдк StackOverflowException рдХреЛ рдирд╣реАрдВ StackOverflowException рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдУрд╡рд░рдлреНрд▓реЛ рд╣реБрдП рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрднрд╡ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдХрднреА-рдХрднреА .net рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдореЗрдореЛрд░реА рдбрдВрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рдбрд░реЛ рдорддред рдиреЗрдЯ рдореЗрдореЛрд░реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдмрдлрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

Source: https://habr.com/ru/post/In132656/


All Articles