Question

Est-il possible de détecter qu'un débogueur est en cours d'exécution dans la mémoire?

et voilà le formulaire sur pseudocode charge.

if debugger.IsRunning then
Application.exit
end if

Modifier Le titre original était "la détection d'un débogueur de mémoire"

Était-ce utile?

La solution

Effectuez les opérations suivantes

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

Autres conseils

Deux choses à garder à l'esprit avant d'utiliser cette touche pour fermer une application en cours d'exécution dans le débogueur:

  1. Je l'ai utilisé un débogueur pour tirer une trace de plantage d'une application .NET commerciale et l'envoyer à l'entreprise où il a ensuite été fixé avec un remerciement pour le rendre facile et
  2. Ce contrôle peut être trivialement défaits.

Maintenant, pour être plus utile, voici comment utiliser cette détection pour garder func eval dans le débogueur de changer votre état de programme si vous avez un cache une propriété évaluée paresseusement pour des raisons de performance.

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;
    }
}

J'ai aussi utilisé cette variante parfois pour assurer mon débogueur étape par ne saute pas l'évaluation:

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;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top