Problem beim C++-Compiler oder -Linker melden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++-Compiler


Compiler-Problem melden

Diagnose unter "Ausführlichkeit" aktiveren

  • Wählen Sie Tools > Optionen > Compilierung und Ausführung aus.
  • Wählen Sie in der Dropdown-Liste Ausführlichkeit die Option Diagnose aus.

Verbosity.png

  • Erstellen Sie ein Build des Projekts.
  • Speichern Sie die Meldungen auf der Registerkarte Ausgabe im Meldungsfenster in eine Textdatei.

Save messages.png

  • Hängen Sie die Textdatei an Ihren Fehlerbericht an.

Vorverarbeitete Dateien beifügen

Wenn Sie einen Compiler-Absturz melden, sollte der Bericht einen eingegrenzten Testfall enthalten, der den Absturz veranschaulicht. Wenn dies nicht möglich ist, fügen Sie eine vorverarbeitete Kopie der Quelldatei bei, die den Absturz verursacht.

Klicken Sie zum Erstellen einer vorverarbeiteten Datei im Projekte-Fenster mit der rechten Maustaste auf die Datei, die abstürzt, und wählen Sie Vorverarbeiten aus. Die IDE erstellt daraufhin eine .i-Datei. Speichern Sie diese Datei und fügen Sie sie dem Bericht bei.

Preprocess.png

Sie müssen Ihrem Bericht die Compiler-Befehlszeile hinzufügen, wie auf der Registerkarte "Ausgabe" des Meldungsfensters angezeigt.

Copy.png

Befehlszeile: Registerkarte "Erzeugen" im Vergleich zur Registerkarte "Ausgabe"

Es ist einfacher, die Befehlszeile aus der Registerkarte Erzeugen zu kopieren, aber es ist besser, die in Ihrem Bericht enthaltene Befehlszeile aus der Registerkarte Ausgabe zu kopieren, da lange Befehlszeilen auf der Registerkarte Erzeugen umbrochen werden.

Linker-Problem melden

Bei Linker-Abstürzen benötigt das F&E-Team in der Regel das gesamte Linkset, um das Problem zu reproduzieren.

Achtung: Nur Objekte und Bibliotheken sind notwendig, wenn Sie den Quellcode nicht zur Verfügung stellen können, ist das im Allgemeinen bei Linker-Problemen in Ordnung.

Linker-Team zum Nachschlagen von XXX####-Code veranlassen

Wenn es sich um Schwerer Fehler: Fehler gefunden (XXX####) handelt, kann das Linker-Team den Fehler nachschlagen (die drei Buchstaben stehen für eine Linker-Quelldatei und die Zahlen für die Zeilennummer) und vielleicht Hinweise darauf geben, was passiert sein könnte. In einigen Fällen deutet dies darauf hin, dass der Compiler eine fehlerhafte Objektdatei erzeugt.

Mögliche Workarounds für Linker-Probleme

Inkrementelles Linken deaktivieren

Deaktivieren Sie das inkrementelle Linken. Bereinigen Sie das Projekt und erzeugen Sie es erneut. Dies kann bei ilink32 helfen, aber nicht bei ilink64, da -Gn in der IDE für WIN64 hart codiert ist.

Heap-Größen erhöhen (für Zu wenig Arbeitsspeicher)

Wenn bei ilink64 der Fehler Schwerer Fehler: Zu wenig Arbeitsspeicher ist, kann die Option -GH hilfreich sein. Zuerst müssen Sie festlegen, dass ilink64 umfangreiche Adressen verarbeiten kann (LARGE ADDRESS AWARE). Verwenden Sie dazu das Dienstprogramm editbin aus Visual Studio:

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

Verwenden Sie dann die Option -GH, um den übergelaufenen Heap zu vergrößern. Ein typischer Fehler könnte zum Beispiel Folgendes melden:

Vorlage:Output

Der Heap dwarf_info ist übergelaufen. Um dies zu beheben, wird der Linker angewiesen, einen größeren Heap zuzuweisen: -GHdwarf_info=0x0E000000. Sie könnten feststellen, dass nach der Vergrößerung eines Heaps ein anderer überläuft. Die letzte Befehlszeile könnte also lauten:

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

Fehler: "Zu wenig Arbeitsspeicher" und "Unbekannter Heap"

Manchmal löst ilink32 den Fehler "Zu wenig Arbeitsspeicher" (OOM) und dann den Fehler Unbekannter Heap aus (normalerweise ist der unbekannte Heap tds).

Dieser Workaround könnte das Problem beheben:

In der IDE:

  1. Wählen Sie Projekt > Optionen > C++-Linker > Erweitert > Weitere Optionen aus.
  2. Fügen Sie -GHtds=0x0A000000 hinzu.
  3. Versuchen Sie, erneut zu linken.

Siehe auch