Résolution des erreurs internes (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Comment utiliser le débogueur


Erreurs internes du compilateur

Trois types d'erreurs générés par le compilateur C++ sont considérés comme des erreurs internes du compilateur :

Ces trois types d'erreurs sont issus des bogues du compilateur. Les éléments <nomfichier> et <ligne> représentent le point de votre code source que le compilateur analysait avant l'erreur, mais peuvent indiquer ou non la source du problème. L'élément <code_erreur> est une information spécifique qui indique aux ingénieurs ce que le compilateur essayait de faire au moment où l'erreur s'est produite.

Que faire si vous rencontrez une erreur interne du compilateur

  1. Rappelez que votre code peut ne pas comporter d'erreur.
  2. Essayez une construction nettoyée.
  3. Essayez une construction en ligne de commande.
  4. Analysez le source afin de restreindre le problème.
  5. Soumettez un rapport de bogues.

Comment effectuer une construction nettoyée

  1. Cliquez avec le bouton droit dans le Gestionnaire de projets et sélectionnez Nettoyer.
  2. Vérifiez la structure de répertoire pour vous assurer qu'aucun fichier obj .tds .dcu .#* ou .pch n'est associé à votre projet.
  3. Choisissez Construire dans le menu Projet.

Comment effectuer une construction en ligne de commande

  1. Vous pouvez copier la ligne de commande du compilateur depuis l'onglet Sortie du volet Messages et l'utiliser dans une interface de commande ou ...
  2. Choisissez la commande "Invite de commande RAD Studio" de votre menu Démarrer, puis tapez msbuild votreprojet.cbproj.

Comment analyser le code source

Si, ni une construction nettoyée ni une construction en ligne de commande ne résout le problème, vous pouvez analyser le code source pour restreindre le problème.


  1. Effectuez un prétraitement du fichier qui est mentionné dans le message d'erreur. Cela peut être réalisé en cliquant avec le bouton droit sur le fichier dans le Gestionnaire de projets et en choisissant le prétraitement, ou en activant la ligne de commande et en remplaçant le compilateur (par ex., bcc32.exe) par le préprocesseur (cpp32.exe) dans la commande de compilation du fichier. Cela génère un fichier sans dépendances externes pour la compilation, qui peut être de taille très importante.
  2. Compilez le fichier prétraité avec le commutateur -P. Si cela n'est pas suffisant pour reproduire le problème, vous pouvez aller directement à l'étape 4.
  3. Si le fichier .i a été compilé correctement, plusieurs commutateurs peuvent être nécessaires afin de reproduire le problème. Recompilez le fichier .i en ajoutant des commutateurs utilisés pour la construction en ligne de commande d'origine jusqu'à ce que vous déterminiez les commutateurs requis pour reproduire le problème.
  4. Ce sont des informations suffisantes pour remplir un rapport de bogues. Si vous ne voulez pas restreindre davantage le problème, allez aux instructions de remplissage du rapport de bogues.
  5. Vous pouvez supprimer tout ce qui se trouve après la ligne où l'erreur se produit, ainsi que les commentaires.
  6. Commencez par décommenter les corps des fonctions et autres portions de code qui peuvent ne pas être associés au problème.
  7. Au fur et à mesure que vous déterminez les portions qui ne sont pas nécessaires pour reproduire le problème, vous pouvez supprimer ces sections du fichier .i.
  8. Lorsque vous avez restreint les éléments de code nécessaires pour reproduire le problème, vous pouvez alors soumettre un rapport de bogues et analyser le type des constructions utilisées pour tenter de trouver une solution.

Comment remplir un rapport de bogues :

  1. Entrez un nouveau rapport de bogue via Quality Portal à l'adresse quality.embarcadero.com.
  2. Choisissez C++Builder en tant que projet.
  3. Choisissez Compiler/C++ en tant que domaine.
  4. Entrez la ligne de commande nécessaire pour reproduire l'erreur dans les étapes du bogue.
  5. Attachez le fichier .i.
  6. Cliquez sur le bouton en forme de coche pour enregistrer le rapport.

Voir aussi