Press "Enter" to skip to content

Debug remoto da Visual Studio 2010 alcuni suggerimenti dal mondo reale.

Questo è un post fantasma, io scrivo per ritrovare le note quando servirà, ma sono solo un amanuense, il vero esperimento è stato fatto da Luca, il mio collega che ama moltissimo scrivere codice, ma odia scrivere documentazione, blog, articoli e parlare alle pubbliche conferenze… ho sempre la speranza di convincerlo almeno a scrivere un blog, ma le possibilità sono scarse.

Ad ogni modo ecco il come si fa:

Avevamo un comportamento anomalo su una macchina per una applicazione appena installata, la macchina era su un dominio diverso da quello dei PC di sviluppo e volendo fare un remote debug, ecco quello che abbiamo fatto:

Sulla macchina remota, quando si apre l’applicazione mswsmon, ovvero il remote debugger, sul menu Tools>options si può scegliere fra:

  1. Nessuna autenticazione
  2. Autenticazione windows

Provando con la prima, si può debuggare, ma non siamo stati in grado di caricare i debug symbols, pertanto cercare il problema non era proprio semplice senza il codice, anche copiando in locale i files .pdb sulla cartella di installazione non si vedevano i simboli.

Per poter usare quindi l’opzione 2 abbiamo dovuto fare una serie di cose che elenco di seguito:

  1. Creare un utente locale con stesso nome e stessa password su entrambe le macchine, dandogli privilegi di amministratore (in verità sulla macchina remota crediamo bastino privilegi di Remote Debug.)
  2. Disattivare i firewall di entrambe le macchine (siamo certi che basta attivare qualche porta, ma essendo nella stessa rete e nello stesso ufficio, questo era più facile.)
  3. Usando mswsmon sulla macchina remota, loggati con l’utente che poi doveva far girare l’applicazione, abbiamo creato un server chiamato: NomeUtente@Nomemecchina, dove NomeUtente era il nome dell’utente locale creato precedentemente.
  4. Loggarsi sulla macchina di sviluppo con l’utente locale e relativa password, aprire Visual Studio 2010, aprire il debug remoto usando Debug>Attach to process e scegliere:
    • Transport = default(Windows Authentication)
    • Qualifier = NomeUtente@Nomemacchina(quelli del punto 3)
    • Cercare il processo, fare doppio click e confermare.
    • A questo punto siamo attaccati al processo sulla macchina remota e possiamo debuggarlo.
  5. Abbiamo verificato anche che se abbiamo la medesima versione del programma su entrambe le macchine, se non ci sono i .pdb sulla macchina remota, è possibile usare la finestra Debug>Windows>Modules per cercare la dll o l’exe a cui siamo attaccati e usando il menu contestuale, con il tasto destro, si può caricare i simboli da un file sulla macchina di sviluppo.