Frage

Gibt es eine Möglichkeit des Erfassens, dass ein Debugger im Speicher ausgeführt wird?

und hier kommt die auf Form Load Pseudo-Code.

if debugger.IsRunning then
Application.exit
end if

Edit: Der ursprüngliche Titel war

"ein im Speicher-Debugger Erkennen"
War es hilfreich?

Lösung

Versuchen Sie, die folgende

if ( System.Diagnostics.Debugger.IsAttached ) {
  ...
}

Andere Tipps

Zwei Dinge im Auge zu behalten, bevor diese mit einer Anwendung läuft im Debugger zu schließen:

  1. Ich habe einen Debugger verwendet, um einen Absturz Spur von einer kommerziellen .NET-Anwendung zu ziehen und es an die Firma schicken, wo sie anschließend mit einem festen wurden danke für die es einfach und
  2. kann das Check sein triviale besiegt.

Nun, um mehr Nutzen zu sein, hier ist, wie diese Erkennung verwenden zu halten func eval im Debugger aus Ihrem Programm Zustand zu ändern, wenn Sie einen Cache eine träge ausgewertete Eigenschaft aus Gründen der Performance haben.

private object _calculatedProperty;

public object SomeCalculatedProperty
{
    get
    {
        if (_calculatedProperty == null)
        {
            object property = /*calculate property*/;
            if (System.Diagnostics.Debugger.IsAttached)
                return property;

            _calculatedProperty = property;
        }

        return _calculatedProperty;
    }
}

Ich habe auch diese Variante manchmal verwendet meine Debugger Schritt-durch, um sicherzustellen, nicht die Auswertung überspringen:

private object _calculatedProperty;

public object SomeCalculatedProperty
{
    get
    {
        bool debuggerAttached = System.Diagnostics.Debugger.IsAttached;

        if (_calculatedProperty == null || debuggerAttached)
        {
            object property = /*calculate property*/;
            if (debuggerAttached)
                return property;

            _calculatedProperty = property;
        }

        return _calculatedProperty;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top