2013-06-10 12 views
11

Jestem świadomy klasy Debugger w obrębie przestrzeni nazw System.Diagnostics, która ma właściwość IsAttached.Wykryj, czy zainstalowany jest debuger * i * przechodzę przez

Czy istnieje gdzieś właściwość, która może zwiększyć to wezwanie i powiedzieć mi, czy faktycznie wchodzimy przez kod, a nie po prostu jesteśmy podłączeni? Rozumiem, że może to być bardzo mało prawdopodobne, ale dobrze byłoby wiedzieć.

EDIT

Być może lepszym pytaniem, zamiast „krokowa” jest uruchomiony jakiś kod:

  1. Kiedy debugger „przerwy” po raz pierwszy (wchodzi w tryb debugowania, po połączeniu)
  2. Po uruchomieniu ponownie (ale nadal jest podłączony, ale nie "przechodzi przez").
+0

Wygląda interesująco ... co próbujesz zrobić? –

+0

Ciekawi mnie, jaki byłby pożytek z tego? Czy możesz dać przykład? Możesz tylko wykryć, jeśli przechodzisz (jeśli to możliwe), jeśli przechodzisz przez linię wykonując wykrywanie. – hatchet

+0

@hatchet, Mam kod, który działa na relatywnie krótkim zegarze, który wygasa niektóre połączone obiekty. Runtime, to działa dobrze - podczas przechodzenia przez kod może powodować problemy. Istnieją alternatywy, które najprawdopodobniej wykorzystam dla celów solidności - ale pomyślałem, że postawię to pytanie. :) –

Odpowiedz

2

Możesz uzyskać stan debuggera z właściwości Debugger.CurrentMode. Ale to tylko powie ci, czy aktualnie znajduje się w stanie break, czy też program jest uruchomiony. Nie ma trybu "kroku", jest to ulotny moment, który zapewnia, że ​​jeśli uda się go znaleźć, działanie na nim będzie już za późno. Praktycznie gwarantowany wyścig gwintujący.

+0

Doskonały. Zasadniczo oczekiwano stanu załamania. Nadal nie będę się do tego projektował - ale zdecydowanie miło jest wiedzieć i trochę tego, czego szukałem. –

+0

'System.Diagnostics.Debugger' nie ma właściwości' CurrentMode', tylko [EnvDTE.Debugger] (https://msdn.microsoft.com/en-us/library/envdte.debugger.currentmode.aspx) ma to. Obawiam się, że jest to dostępne tylko dla rozszerzeń VS, a nie debugowanego programu. – robert4

Powiązane problemy