2013-06-10 1 views
11

Sono a conoscenza della classe Debugger all'interno dello spazio dei nomi System.Diagnostics che ha la proprietà IsAttached.Rileva se il debugger è collegato * e * passaggio attraverso

C'è una proprietà, da qualche parte, che può aumentare questa chiamata e dirmi se stiamo effettivamente passando il codice, invece di limitarci ad essere semplicemente collegati? Capisco che questo possa essere altamente improbabile, ma sarebbe utile saperlo.

EDIT

Forse una domanda migliore, piuttosto che "stepping" è in esecuzione del codice:

  1. Quando il debugger "rompe" per la prima volta (entra in modalità di debug, dopo essere stato attaccato
  2. Quando viene eseguito nuovamente (ma è ancora collegato, ma non "passaggio").
+0

Sembra interessante ... cosa stai cercando di fare? –

+0

Sono curioso che uso avrebbe questo? Puoi fare un esempio? Potresti solo scoprire se stavi attraversando (se possibile) se stavi scavalcando la linea facendo il rilevamento. – hatchet

+0

@hatchet, ho del codice che gira su un timer relativamente breve che fa scadere alcuni oggetti raggruppati. Runtime, funziona bene - quando si passa attraverso il codice può causare problemi. Ci sono alternative, che probabilmente impiegherò per motivi di robustezza, ma ho pensato di porre questa domanda. :) –

risposta

2

È possibile ottenere lo stato del debugger dalla proprietà Debugger.CurrentMode. Ma questo ti dirà solo se è attualmente in pausa o se il programma è in esecuzione. Non esiste una modalità "step", è un momento fugace che praticamente garantisce che, se potessi scoprirlo, agire su di esso sarebbe già troppo tardi. Praticamente garantito per essere una gara di threading.

+0

Eccellente. In sostanza, lo stato di pausa era quello che speravo. Tuttavia, non mi occuperò di progettazione intorno ad esso - ma è sicuramente un bello sapere e un po 'cosa stavo cercando. –

+0

'System.Diagnostics.Debugger' non ha la proprietà' CurrentMode', solo [EnvDTE.Debugger] (https://msdn.microsoft.com/en-us/library/envdte.debugger.currentmode.aspx) ha esso. Temo che questo sia accessibile solo per le estensioni VS, non per il debug del programma. – robert4