2009-05-13 9 views
1

Ich benutze Intel Code-Coverage-Tools auf Linux mit g ++ Compiler. Für eine bestimmte Klasse zeigt das Coverage-Tool 2/3 zusätzliche Funktionen, die im Quellcode tatsächlich vorhanden sind.Compiler generiert Code in Code-Abdeckung

Was sind diese zusätzlichen Funktionen? Sind sie compilergenerierte Funktionen?

Ich schließe Header-Dateien aus Code Coverage. Meine Klassen sind einfach mit leeren ctor und dtor.

Ich denke, folgende Funktionen werden vom Compiler generiert.

  1. Copykonstruktor
  2. Zuweisungsoperator
  3. Makro (Nicht in meinem Fall)
  4. Signalschlitzverbindungsmechanismen (zB in Qt moc Compiler erzeugt diese)
+1

Könnte nützlich sein, um einige Beispiele für die Funktionsnamen zu geben, die Sie sehen ... –

+0

I 1/2 Funktionen mit _zn Symbol an den Ctor. Aber manchmal kann ich diese extra gemeldeten Funktionen nicht sehen. –

+0

Ich dachte an etwas wie - "für Klasse yax, sehe ich die folgenden zusätzlichen Funktionen" mit einer Liste der vollständigen Funktionsnamen und vorzugsweise die Klassendeklaration. –

Antwort

1

Diese blog entry (beschäftigt sich mit debuggen mit GDB) erklärt, warum Sie die "Extra" Konstruktoren sehen.

gcc generiert zwei verschiedene Funktionskörper für einen Konstruktor. Eine ist eine reguläre, die das gesamte Objekt einschließlich aller Basen konstruiert. Ein anderer erstellt alles außer virtuellen Basisklassen. Zufällig gibt gcc beide Konstruktoren auch für Klassen aus, die überhaupt keine virtuelle Basis haben.