2009-07-10 2 views
10

Ho una app VB che devo monitorare mentre è in esecuzione. Ho aggiunto alcune variabili alla finestra di controllo, ma mentre l'app è in esecuzione la finestra di controllo è disattivata. L'unico modo in cui ho trovato di vedere i valori delle variabili è usare Debug -> Break All, ma questo arresta il programma.La finestra di Visual Studio Watch è in grigio?

Ho utilizzato altri IDE e consentono di monitorare le variabili attive. È possibile in VS?

Siamo spiacenti se questa è una domanda noob.

AGGIORNAMENTO: Per essere chiari, la mia app comunica con un apparecchio di laboratorio e, man mano che i dati vengono inviati o ricevuti o vengono rilevati errori, i contatori vengono incrementati. Mi piacerebbe vedere questi contatori, ma non voglio costruire uno schermo per fare questo dato che sono per il debug. Ho appena dato per scontato che questa è una funzionalità di base in qualsiasi IDE

SHOCKED: Sembra che Visual Studio non offra questa funzionalità di base (quello che prenderei in considerazione). Per quelli che sembrano pensare che questo non è possibile con un linguaggio interpretato, considera questo esperimento mentale. Se hai premuto Break All rapidamente seguito da Continua, dovresti aggiornare la finestra di visualizzazione - corretta? Perché quindi Visual Studio non può farlo come un singolo comando Aggiorna visualizzazione o meglio ancora consentire a questa funzione di essere eseguita automaticamente in un periodo specificato dall'utente. Nessuna scrittura di debug, nessun file di registro, nessun arresto del programma mid-stream e creazione di timeout. Sono solo scioccato dal fatto che non puoi farlo. È un po 'come non avere punti di interruzione.

+0

@Shocked In teoria un debugger potrebbe anche farlo impostando una CPU-supporto informatico gamma punto di interruzione sulla memoria e fare 'pausa, aggiornare l'orologio, e poi continuare' automaticamente ogni volta che la variabile viene aggiornata. – ChrisW

risposta

5

Quale IDE o ambiente di sviluppo mostra, in tempo reale, i valori delle variabili nella finestra di controllo, senza dover toccare alcun punto di interruzione mentre l'applicazione è in esecuzione?

Visual Studio non fornisce questo. Per ottenere i valori aggiornati nella finestra di controllo o modificare gli elementi, è necessario che l'app si trovi in ​​un punto di interruzione o di debug.

+2

Sia Codewarrior che Chameleon consentono di aggiornare manualmente il contenuto delle variabili o impostare un aggiornamento automatico, specificando un intervallo di aggiornamento in secondi o msec. Ho appena pensato che questa sia la funzionalità di base in qualsiasi debugger. – NormD

+0

Ah, è certamente passato un po 'da quando ho usato Codewarrior. Non ero a conoscenza di questo, motivo per cui ho chiesto quali IDE consentono di fare questo. Sono impressionato e desidero che Visual Studio abbia una funzionalità simile. Grazie per l'informazione. – marcc

5

Dopo aver eseguito "break" per dare il controllo del programma al debugger, è possibile "passare" attraverso il codice utilizzando i tasti funzione come F10 e F11. Durante ogni "passaggio", il programma valuta una o più affermazioni; dopo ogni passo si ferma (fino al prossimo passo), e mentre (solo mentre) si ferma, puoi 'guardare' il suo stato attuale.

Ci sono altri modi per entrare nel debugger (per usare la finestra Watch mentre il programma è fermo): altri modi come impostare 'breakpoints' e usare la funzione 'run to cursor'.


Certo, ma l'arresto di un programma che è attivamente ricevendo o inviando dati a un altro processo, autista, ecc, si ferma questa comunicazione e provoca timeout e altri problemi.

È vero. Per guardare i valori cambiano in tempo reale, io uso un file di log:

  • aggiungere istruzioni al mio codice, in modo tale che quando cambio il valore di una variabile emetto una nuova riga in un file di log (che mostra la mutato valore)

  • Eseguire il programma

  • Guarda nuove linee di essere aggiunto al file di registro utilizzando un'utility come tail -f.

Non ho mai visto un debugger con le funzionalità menzionate. La cosa più vicina alla funzionalità che hai citato (e che non è esattamente la funzionalità che hai citato) è How to: Set a Data Breakpoint (Native Only).

+0

Ovviamente, ma l'arresto di un programma che sta attivamente ricevendo o inviando dati ad un altro processo, driver, ecc, interrompe questa comunicazione e causa timeout e altri problemi. – NormD

+1

Ci sono molti problemi con un file di registro. Diciamo che stai ricevendo migliaia di pacchetti di dati al secondo, se invece di aumentare semplicemente un contatore, scrivi una riga su un file di registro, il sistema cadrà. Anche scrivere su una console è un'operazione molto pesante rispetto all'incremento di un contatore. – NormD

+0

In un altro commento hai detto "Codewarrior e Chameleon ti permettono di ... specificare un intervallo di aggiornamento in secondi o msec"; puoi costruire la stessa logica nel tuo logging, ad es. scrivere sul file di log una volta ogni pochi secondi. Ad ogni modo, penso che tu abbia la tua risposta ora. – ChrisW

0

Assicurati di essere in "Debug" build e Microsoft Debugger è in esecuzione come servizio e non bloccato/disabilitato.

+0

Premere F5 e l'app viene eseguita. Presumo che questa sia la build di debug poiché se interrompo l'app tutte le variabili hanno valori. Hoes esegue un debug come servizio? Questo mi permetterebbe di vedere le variabili mentre il programma sta cambiando? – NormD

2

Quello che stai tentando di fare non è possibile in Visual Studio. Tutte le finestre di ispezione variabile (orologio, gente del posto, auto, ecc ...) si basano sul processo di debug che si trova in uno stato di pausa per funzionare.

Questo è vero essenzialmente per qualsiasi debugger con cui ho lavorato in passato. Almeno quelli che usano un linguaggio compilato.

Sono curioso di sapere a quale IDE ti riferisci? Hanno a che fare con le lingue interpretate?