Sicherheit

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++-Compiler


Projekt > Optionen > Erzeugen > C++-Compiler > Sicherheit

Verwenden Sie dieses Dialogfeld, um Sicherheitseinstellungen für den C++-Compiler festzulegen, die die Sicherheit und Qualität des Quellcodes und der Anwendung ermöglichen und verbessern.

Optionen Beschreibung

Ziel, Übernehmen, Speichern

Siehe Optionen für das Ziel.

Gemeinsame Elemente

Siehe Gemeinsame Elemente auf den Projektoptionsseiten.

Sicherheitsoptionen

Sanitizer fügen Ihrer Anwendung Laufzeitprüfungen hinzu, mit denen die Richtigkeit und Sicherheit des Codes verbessert werden kann.

Sicherheitsoptionen Beschreibung Compiler-Optionen
bcc32 bcc32c bcc64 bcc64x

Address Sanitizer

Erkennt verschiedene Speicherfehler, z. B. Verwendung nach der Freigabe, doppelte Freigaben, Zugriff außerhalb des gültigen Bereichs und mehr.
Vorgabe = False

Achtung: Siehe den Abschnitt Verwenden des Address Sanitizer unten.

Plattform nicht unterstützt

Plattform nicht unterstützt

Plattform nicht unterstützt

Checkmark.svg

Undefined Behavior Sanitizer

Erkennt eine Vielzahl von Operationen mit versteckten Fehlern oder unerwartetem Verhalten (nicht im C++-Standard definiert). Beispiele sind Überläufe von vorzeichenbehafteten Ganzzahlen, Bitverschiebungen, die zu breit für den Datentyp sind, Dereferenzierung von ungültigen Zeigern und vieles mehr.
Vorgabe = False

Plattform nicht unterstützt

Plattform nicht unterstützt

Plattform nicht unterstützt

Checkmark.svg
Hinweis: Alle Address-Sanitizer sollten nur im Debug-Build aktiviert sein. Es gibt zwar keine technischen Gründe, Apps mit aktivierten Sanitizern an Endbenutzer auszuliefern, und sie können zum Debuggen eines Kundenproblems hilfreich sein (vergessen Sie nicht, alle erforderlichen weitergabefähigen Dateien, insbesondere für ASAN, einzubeziehen), aber standardmäßig sollten keine Release-Modus-Apps an Benutzer ausgeliefert werden, die Sanitizer enthalten. Sanitizer sind Laufzeit-Debugging-Tools.

Verwenden des Address Sanitizer

Wenn Sie eine Anwendung mit aktiviertem Address Sanitizer erzeugen, müssen Sie die Anwendung außerhalb der IDE ausführen. Die Ausführung an einer Eingabeaufforderung wird dringend empfohlen, um Zugriffsverletzungen (AVs) zu vermeiden.

Wenn Sie die Anwendung in der IDE ausführen, erfasst der Debugger Zugriffsverletzungen in Bezug auf die Aufgaben, die der Address Sanitizer durchführt. Ein Prozess wird so lange ausgeführt, bis der Sanitizer einen Fehler findet. In diesem Fall wird eine Meldung auf der Konsole ausgegeben und der Prozess beendet (es ist unbedenklich, den Prozess fortzusetzen, aber diese Meldungen sind irreführend, da sie den Anschein erwecken, dass tatsächlich Fehler vorliegen). Bei der Ausführung über eine Eingabeaufforderung bleibt dieser Text auf dem Bildschirm stehen.

Standardmäßig haben UI-Apps (VCL oder FMX) keine Konsole, insbesondere keine Standardfehlerausgabe. Wenn ein Benutzer die App direkt ausführt:

> myapp.exe

Werden daher keine Fehler zurückgegeben, sondern die App beendet. Um dies zu beheben, ändern Sie die App so, dass das Konsolenuntersystem verwendet wird, oder leiten Sie die Ausgabe wie folgt an eine Protokolldatei (dadurch wird ein stderr erzeugt):

myapp 2> asanlog.txt.

oder

myapp > asanlog.txt 2>&1

Der obige Befehl leitet stderr und stdout an die Protokolldatei weiter.

Siehe auch