Ändern des Programmablaufs, wenn sie unter einem Debugger ausgeführt wird
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"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:
- 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
- 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