Debugger da?

Unter .NET ist es manchmal sehr nützlich zu wissen, ob an die Anwendung ein Debugger angehängt ist. Im Namespace “System.Diagnostics” gibt es dazu auch die passende statische Eigenschaft mit dem Namen “IsAttached”. Die Nutzung könnte dabei so aussehen:

if(Debugger.IsAttached==true)
{
    //Do something
}

Der Quelltext in den Blockklammern wird dabei nur dann ausgeführt, wenn ein Debugger an die Anwendung angehangen ist. Das kann die IDE (Visual Studio und Co.) sein, es kann aber auch ein böswilliger Angreifer sein – wobei es natürlich Verfahren gibt, die Erkennung auszuhebeln.

Controls im Visual Studio zur Designzeit debuggen

Die Entwicklung von Controls unter .NET und Windows Form geht eigentlich relativ leicht von der Hand. Kompliziert wird das ganze immer dann wenn Fehler auftreten. So lassen sich Controls welche im Designmodus Exceptions werfen, nur schwer debuggen. Aber wie immer gilt, wo ein Wille ist, da ist auch ein Weg.

Das Attach to Process Fenster

Das Attach to Process Fenster

Um ein Control zu debuggen, sollte man das entsprechende Projekt bzw. die Solution zwei mal öffnen. In dem einen Visual Studio öffnet man nun den Designer. Im anderen Visual Studio wählt man im Debugmenü den Punkt “Attach to Process…” aus. Das sich öffnende Fenster zeigt alle Prozesse an, an welche sich der Debugger anhängen kann. Hier wird das erste Visual Studio (das mit dem Designer) ausgewählt. Nun kann man im Quelltext des Controls Breakpoints setzen und somit die Ausführung überwachen. Allerdings sollte man sich dabei nicht wundern, das dass Control im Debugger größer erscheint als es eigentlich ist. Der Grund dafür liegt darin, das genau genommen nicht das Control sondern das gesamte Visual Studio debuggt wird.