Comment signaler un problème relatif au compilateur C++ ou au lieur

De RAD Studio
Aller à : navigation, rechercher

Remonter à Compilateur C++


Comment signaler un problème relatif au compilateur

Activer la verbosité du diagnostic

  • Accédez à Outils > Options > Compilation et exécution.
  • Dans la liste déroulante Verbosité, sélectionnez Diagnostic.

Verbosity.png

  • Effectuez une construction du projet.
  • Enregistrez les messages de l'onglet Sortie du panneau Messages dans un fichier texte.

Save messages.png

  • Joignez le fichier texte à votre rapport de bogue.

Inclure les fichiers prétraités

Lorsque vous signalez un problème relatif au compilateur, le rapport doit contenir un cas de test restreint qui illustre le problème. Si cela n'est pas possible, veuillez inclure une copie prétraitée du fichier source à l'origine du problème.

Pour créer un fichier prétraité, cliquez avec le bouton droit sur le fichier source qui se bloque dans le Gestionnaire de projets, puis sélectionnez Prétraiter. L'EDI crée un fichier ayant l'extension .i. Enregistrez ce fichier et joignez-le au rapport.

Preprocess.png

Vous devez ajouter la ligne de commande du compilateur à votre rapport, comme indiqué dans l'onglet Sortie de la vue Message.

Copy.png

Ligne de commande : onglet Construction vs onglet Sortie

Bien qu'il soit plus facile de copier la ligne de commande depuis l'onglet Construction, il est préférable de copier la ligne de commande jointe avec votre rapport depuis l'onglet Sortie, car l'onglet Construction encapsule les lignes de commande longues.

Comment signaler un problème relatif au lieur

Pour les problèmes relatifs au lieur, l'équipe R&D a généralement besoin de l'enchaînement des événements pour reproduire le problème.

Attention| Seuls les objets et les bibliothèques sont nécessaires. Si vous ne pouvez pas les fournir, le code source est généralement suffisant pour les problèmes relatifs au lieur.}}

Demander à l'équipe responsable du lieur de rechercher le code XXX####

S'il s'agit d'un message Erreur fatale détectée (XXX####), l'équipe responsable du lieur peut rechercher l'erreur (les trois lettres représentent un fichier source du lieur et les chiffres le numéro de ligne) et éventuellement fournir des informations sur ce qui est en train de se produire. Cela peut être dû au fait que le compilateur génère un fichier objet incorrect.

Solutions possibles aux problèmes relatifs au lieur

Désactiver la liaison incrémentale

Désactiver la liaison incrémentale ; Nettoyer le projet et Reconstruire. Cela peut s'avérer utile avec ilink32, mais pas avec ilink64 car -Gn est codé en dur dans l'EDI pour WIN64.

Augmenter les tailles de tas (pour Plus de mémoire)

Pour ilink64, si l'erreur est Erreur fatale : Plus de mémoire, le commutateur -GH peut s'avérer utile. Vous devez d'abord configurer ilink64 pour qu'il reconnaisse les grandes adresses à l'aide de l'utilitaire editbin fourni avec Visual Studio :

editbin.exe /LARGEADDRESSAWARE $BDS/bin/ilink64.exe

Utilisez ensuite le commutateur -GH pour augmenter la valeur qui a été dépassée. Par exemple, une erreur type peut signaler :

Modèle:Output

La valeur de dwarf_info a été dépassée. Pour corriger ce problème, nous demandons au lieur d'allouer une plus grande taille via : -GHdwarf_info=0x0E000000. Il peut arriver que l'augmentation de la valeur d'un tas provoque le débordement d'un autre tas. Dans ce cas, la ligne de commande finale peut indiquer :

-GHinfo=0x24000000 -GHdwarf_info=0x0E000000 -GHbss=0x0E000000 -GHdwarf_str=0x0A000000 -GHdwarf_line=0x06000000 -GHcode=0x0E000000

Erreur Plus de mémoire et Tas inconnu

Parfois, ilink32 déclenche une erreur de mémoire insuffisante puis une erreur Tas inconnu (normalement, ce tas inconnu est tds).

Veuillez essayer cette solution :

Dans l'EDI :

  1. Accédez à Projet > Options > Lieur C++ > Avancées > Autres options
  2. Ajoutez -GHtds=0x0A000000.
  3. Effectuez une nouvelle tentative de liaison.

Voir aussi