Ich möchte einen C # -Code "nur debuggen" hinzufügen, der nur ausgeführt wird, wenn die debuggende Person dies anfordert. In C ++ habe ich etwas Ähnliches gemacht:
void foo()
{
// ...
#ifdef DEBUG
static bool s_bDoDebugOnlyCode = false;
if (s_bDoDebugOnlyCode)
{
// Debug only code here gets executed when the person debugging
// manually sets the bool above to true. It then stays for the rest
// of the session until they set it to false.
}
#endif
// ...
}
Ich kann in C # nicht genau dasselbe tun, da es keine lokale Statik gibt.
Frage : Was ist der beste Weg, um dies in C # zu erreichen?
- Sollte ich ein statisches Feld für private Klassen mit C # -Vorprozessoranweisungen (
#if/#endif DEBUG
) verwenden? - Sollte ich das Conditional-Attribut (um den Code zu speichern) und dann ein statisches Feld für eine private Klasse verwenden ( nicht von C # -Vorprozessoranweisungen umgeben
#if/#endif DEBUG
?). - Etwas anderes?
quelle
Was Sie suchen, ist
Attribut.
Wenn Sie zum Beispiel eine Methode schreiben wie:
Jeder Aufruf dieser Methode in Ihrem eigenen Code wird nur im Debug-Modus ausgeführt. Wenn Sie Ihr Projekt im Release-Modus erstellen, wird sogar der Aufruf der "MyLovelyDebugInfoMethod" ignoriert und aus Ihrer Binärdatei gelöscht.
Und noch etwas: Wenn Sie feststellen möchten, ob Ihr Code gerade zum Zeitpunkt der Ausführung debuggt oder nicht, können Sie auch überprüfen, ob der aktuelle Prozess von einer JIT verknüpft ist. Aber das ist alles zusammen ein anderer Fall. Schreiben Sie einen Kommentar, wenn Sie dies versuchen.
quelle
Sie können dies versuchen, wenn Sie den Code nur ausführen müssen, wenn Sie einen Debugger an den Prozess angehängt haben.
quelle
Ich denke, es kann erwähnenswert sein, dass
[ConditionalAttribute]
sich das imSystem.Diagnostics;
Namespace befindet. Ich bin ein bisschen gestolpert, als ich bekam:Error 2 The type or namespace name 'ConditionalAttribute' could not be found (are you missing a using directive or an assembly reference?)
nach dem ersten Gebrauch (ich dachte, es wäre in gewesen
System
).quelle
Wenn Sie wissen möchten, ob beim Debuggen, überall im Programm. Benutze das.
Deklarieren Sie die globale Variable.
Erstellen Sie eine Funktion zum Überprüfen des Debug-Modus
Rufen Sie in der Initialisierungsmethode die Funktion auf
Jetzt im gesamten Programm. Sie können nach Debugging suchen und die Vorgänge ausführen. Hoffe das hilft!
quelle