рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд░рдирд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕ (рдЯреВрд▓ - рдЕрдЯреИрдЪ рдЯреВ рдкреНрд░реЛрд╕реЗрд╕ ...) рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреНрд╖рдорддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдм рддрдХ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рдпрдорд┐рддрддрд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рддрдм рддрдХ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪреА рд╕реЗ рд╕рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪреБрдирдирд╛ рдмреЗрд╣рдж рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрди рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИред
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореВрд▓рднреВрдд рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИрдВред
1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдХреНрд░реЛ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ (рдЯреВрд▓ - рдореИрдХреНрд░реЛрдЬрд╝ - рдореИрдХреНрд░реЛ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░) рдореЗрдВ рдПрдХ рдирдпрд╛ рдЕрдЯреИрдЪ рдЯреВрдкреНрд░реЛрд╕реЗрд╕ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВред

2. рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдореЗрдВ, рдкреНрд░реЛрд╕реЗрд╕рдирд╛рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВред
Public Function AttachToProcess(ByVal ProcessName As String) As Boolean Dim success As Boolean success = True Try Dim debugger As EnvDTE80.Debugger2 = DTE.Debugger Dim transport As EnvDTE80.Transport = debugger.Transports.Item("Default") Dim name As String = System.Security.Principal.WindowsIdentity.GetCurrent().Name name = name.Substring(0, name.IndexOf("\")) Dim process As EnvDTE80.Process2 = debugger.GetProcesses(transport, name).Item(ProcessName) process.Attach() Catch ex As System.Exception success = False End Try Return success End Function
3. рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
Sub AttachToW3WP() If Not AttachToProcess("w3wp.exe") Then System.Windows.Forms.MessageBox.Show("Cannot attach to process") End If End Sub
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рдХреЛрдбред
Public Module AttachToProcess Public Function AttachToProcess(ByVal ProcessName As String) As Boolean Dim success As Boolean success = True Try Dim debugger As EnvDTE80.Debugger2 = DTE.Debugger Dim transport As EnvDTE80.Transport = debugger.Transports.Item("Default") Dim name As String = System.Security.Principal.WindowsIdentity.GetCurrent().Name name = name.Substring(0, name.IndexOf("\")) Dim process As EnvDTE80.Process2 = debugger.GetProcesses(transport, name).Item(ProcessName) process.Attach() Catch ex As System.Exception success = False End Try Return success End Function Sub AttachToW3WP() If Not AttachToProcess("w3wp.exe") Then System.Windows.Forms.MessageBox.Show("Cannot attach to process") End If End Sub End Module
рдЖрдк рдореИрдХреНрд░реЛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

4. рдореИрдХреНрд░реЛ рдХреЙрд▓ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓рдмрд╛рд░ рдЬреЛрдбрд╝реЗрдВ (рджреЗрдЦреЗрдВ - рдЯреВрд▓рдмрд╛рд░ - рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ ...)ред


5. рдПрдХ рдмрдЯрди (рдХрдорд╛рдВрдб) рдЬреЛрдбрд╝реЗрдВред рдореИрдХреНрд░реЛрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдореИрдХреНрд░реЛрдЬрд╝ рд╢реНрд░реЗрдгреА рдореЗрдВ рд╣реИрдВред


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреИрдирд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрдЯрди рд╣реИ рдЬрд┐рд╕рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

6. рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ред рдореИрдХреНрд░реЛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрдпреЛрдЬрди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

рджреЗрдЦрд╛! рдЕрдм рд╕реЗ, рдЖрдк рдЕрдЯреИрдЪ рдХреЛ рдорд╛рдЙрд╕ рдХреЗ рдПрдХ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдпрд╛ рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред