Remote Debugging cu Visual studio

Acesta este un Guest Post de Pascanu Alexandru si a fost inspirata de cartea de pe amazon -  Professional ASP.NET 2.0

Remote debugging e foarte simplu de realizat incepand de la VS 2005 singurele probleme sunt cele de securitate in sensul ca trebuie sa ai credentialele corespunzatoare pe ambele masini (masina client pe care e VS-ul si masina server remote pe care e aplicatia la care vrem sa-i facem debugging).remote debuger se gaseste la C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE eu avand instalat vs 2008 aici .

Am facut acest folder share cu permisiuni de read pt everyone –guest veti vedea mai departe de ce !

Pentru a face remote debugging trebuie setate masina remote pentru aceasta operatiune,in loc de a face niste setari de system complicate si avansate ,tot ce trebuie facut e sa lansam aplicatia msvsmon.exe din shareul creat mai sus –asta de pe masina remote normal.

Se pot depana procese remote ce ruleaza sub contul de user care a lansat Visual studio ,asta fara a da alte permisuni in prealabil .Daca de exemplu trebuie sa se faca debug pe un process care ruleaza sub alt cont de utilizator decat contul care a initiat debuggingul remote,de exemplu un process aspnet,atunci trebuie avute dreturi de administrator pe masina remote-ma refer la contul ce initiaza debuggingul.

Cel mai important lucru cand se face remote debugging e urmatorul:Userul sub care ruleaza Visual studio trebuie mapat cumva catre un cont de utilizator de pe masina remote ce ruleaza msvsmon.exe si viceversa.Cel mai usor se poate face asta creand un cont de user local pe ambele masini cu acelasi username si password.

Daca masinile sunt in acelasi domeniu cel mai simplu e sa se lanseze aplicatiile msvsmon.exe si Visual Studio sub acelasi Domain Account,daca sunt in domenii/workgroupuri diferite solutia e cu acelasi local account.

O observatie merita facuta aici:Pentru masinile windows xp aflate intr-un workgroup politica de securitate Network Acces:Shared and security model for local Accounts afecteaza remote debugging daca e setata guest only,trebuie aleaza optiunea cealalata classic.Acest lucru nu e o problema pt masinile winxp sau win2003 logate intr-un domeniu NT

Debuggingul Remote pe o masina Windows Xp cu sp2

Trebuie sa ne asiguram ca portul TCp 80 e deschis ,asta daca dorim sa depanam o aplicatie aspnet,pentru ca iis si aspnet sa comunice cu masina remote .se recomanda sa tinem limitate aria de unde poate fi facut remote debugging adica local subnet in locul accesarii remote debugging de pe net.”Under the hood” procesul de remote debugging foloseste dcom mai exact se stabileste o conexiune dcom intre client (Visual Studio) si server adica aplicatia msvsmon.exe deci porturile tcp 135 si udp 4500 trebuie sa fie deschise ,dar dupa cum v-am zis se ocupa msvsmon de configurarea masinii,lucrurile astea trebuie avute in vedere daca facem remote debugging de pe internet printr-un vpn tunel ipsec de exemplu si atunci se complica un pic lucrurile.

Un ultim lucru de verificat este ca msvsmon.exe sa fie in lista de exceptii a firewall de xp.Inca odata subliniez nu e recomdat ca sa lasam sesiunea de debugging adica masina pt remote debugging lumii din afara internetului.remote debugging in sine e ultima solutie –in cazul in care un bug nu poate fi repprodus pe masina de test/development si trebuie sa se faca pe masina de productie de deployment.

O sa prezint mai jos urmatorul caz pe care l-am reprodus la mine:

Visual Studio ruleaza pe o masina din domeniul firmei iar msvsmon.exe masina pe care fac remote debugging ruleaza pe o masina virtuala de windows 7 cu un worckgroup al ei:

Primul pas ma loghez pe statia mea windows 7 (vm-ul pe care fac debugging) cu userul local Alex –user cu care voi rula visual studio atentie trebuie sa fie acelasi pt ca unul e in worckgroup altul domeniu.

Pas2 accesez aplicatia msvsmon.exe din shareul Remote Debugging despre care am vorbit mai sus

clip_image002

Pas 3Din acest share lansez aplicatia msvsmon.exe:

clip_image004

Pas4 Rulez Visual studio ca si userul local Alex –user sub care ruleaza msvsmon.exe remote-pt asta dau click drepta pe Vs run as si aleg useru alex.Pe vm pornesc aplicatia dot net la care se vrea depanarea:

clip_image006

Pas 5 Din vs2008 ma atasez remote la procesul pe care vreau sa-l depanaez in cazul meu Aplicatia Adm_client.exe in cazul in care conexiunea s-a realizat cu success in msvsmon o sa afisat userul alex-pc cu statusul connected ca in figura:

clip_image008

Pas 6 Nu-mi ramane decat sa pun un break point in locul in care vreau depanarea in cazul meu am pus la lina catch cand conexiunea nu se poate realize sis a incerc din aplciatia remote sa execut operatiunea de logare.Se observa ca debuggerul se lanseaza in locul in care am pus breakpoint:

clip_image010

Cam asta ar fi tot,sper ca m-am facut destul de explicit si ca o sa foloseasca cuiva vreodata acest articol.

 

Acesta este un Guest Post de Pascanu Alexandru si a fost inspirata de cartea de pe amazon -  Professional ASP.NET 2.0

Leave a Reply

Your email address will not be published. Required fields are marked *