Sécurité

De RAD Studio
Aller à : navigation, rechercher

Remonter à Compilateur C++


Projet > Options > Construction > Compilateur C++ > Sécurité

Utilisez cette boîte de dialogue pour définir les paramètres de sécurité du compilateur C++, qui permettent d’activer et d’améliorer la sécurité et la qualité du code source et de l’application.

Options Description

Cible, Appliquer, Enregistrer

Voir Options de la cible.

Eléments communs

Voir Eléments communs des pages Options de projet.

Options de sécurité

Les sanitizers ajoutent une vérification lors de l'exécution de votre application. Elle permet d'améliorer l'exactitude du code et sa sécurité.

Options de sécurité Description Commutateurs du compilateur
bcc32 bcc32c bcc64 bcc64x

Address Sanitizer (ASan)

Détecte diverses erreurs de mémoire (utilisation après libération, double libération, accès hors limites, etc.).
Valeur par défaut = False

Attention: Voir la section Utilisation du Address Sanitizer ci-dessous.

Plate-forme non supportée

Plate-forme non supportée

Plate-forme non supportée

Checkmark.svg

Undefined behavior sanitizer (UBSan)

Détecte diverses opérations entraînant des échecs silencieux ou des comportements inattendus (non conformes au standard C++). Cela comprend notamment les débordements d'entiers signés, les décalages de bits trop importants pour le type de données, le déférencement de pointeurs non valides, etc.
La valeur par défaut est False

Plate-forme non supportée

Plate-forme non supportée

Plate-forme non supportée

Checkmark.svg
Remarque: Tous les Address Sanitizers doivent uniquement être activés dans une construction de débogage. Même s'il n'y a aucune raison technique empêchant de distribuer une application dont les sanitizers sont activés, et que cela puisse être utile pour le débogage d'un problème chez votre client (en veillant à inclure les redistribuables nécessaires, notamment pour ASan), par défaut, aucune application en ‘mode release’ envoyée à un client ne devrait les inclure. Ce sont des outils de débogage à l'exécution.

Utilisation du Address Sanitizer

Lorsque vous construisez une application en ayant activé le Address Sanitizer, l'application doit être exécutée en dehors de l'EDI. L'exécution depuis une invite de commande est fortement recommandée pour éviter l'obtention d'erreurs AV.

Lorsque l'application est exécutée depuis l'EDI, le débogueur capture les violations d'accès en relation avec l'activité de l'Adress Sanitizer. Un processus s'exécute jusqu'à ce que le Sanitizer trouve une erreur. A ce moment, l'erreur apparaît sur la console et le processus s'arrête (Il est possible de poursuivre l’exécution après ces messages, mais il faut faire attention, car ils semblent indiquer des erreurs). Ces messages restent affichés à l'écran lorsque l'exécution s'effectue depuis une fenêtre de commande.

Par défaut, les apps avec interface utilisateur (VCL ou FMX) ne sont pas associées à une console pour la sortie des erreurs standard. Ainsi, si un utilisateur exécute directement l'app,

> myapp.exe

aucune erreur n'est renvoyée, et l'exécution de l'app s'arrête. Pour éviter ce problème, configurez l'app de façon à ce qu'elle utilise une console ou dirige la sortie vers un fichier log (ce qui crée la sortie stderr) comme suit :

myapp 2> asanlog.txt.

ou

myapp > asanlog.txt 2>&1

La commande ci-dessus redirige à la fois stderr et stdout vers le fichier log.

Voir aussi