Dies ist der Befehl creduce, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
creduce – C- und C++-Programmreduzierer
BESCHREIBUNG
creduce 2.5.0 (unbekannt) -- ein C- und C++-Programmreduzierer
C-Reduce erfordert einen „Interessantitätstest“ und eine oder mehrere zu reduzierende Dateien, die unbedingt reduziert werden müssen
schreibbar. Der Interessantheitstest ist ein ausführbares Programm (normalerweise ein Shell-Skript), das
gibt 0 zurück, wenn eine teilweise reduzierte Datei interessant ist (ein Kandidat für eine weitere Reduzierung)
und gibt einen Wert ungleich Null zurück, wenn eine teilweise reduzierte Datei nicht interessant ist (kein Kandidat für
weitere Reduzierung -- alle uninteressanten Dateien werden verworfen).
C-Reduce führt den Interessantheitstest in einem neuen temporären Verzeichnis aus, das nur das enthält
teilweise reduzierte Datei(en). Wenn also der Interessantheitstest einen teilweise untersucht
Um eine reduzierte Datei zu erstellen, muss dies unter Verwendung eines relativen Pfads zum aktuellen Arbeitsverzeichnis erfolgen. Auf der
Wenn sich der Interessantheitstest hingegen auf eine Datei bezieht, die nicht reduziert wird,
Dies sollte über einen absoluten Pfad erfolgen.
Der Interessantheitstest sollte keine Befehlszeilenargumente erwarten. Es sollte sein
deterministisch und möchte möglicherweise Ressourcenbeschränkungen für die von ihm aufgerufenen Unterbefehle erzwingen
(z. B. mit ulimit). Insbesondere ist bekannt, dass C-Reduce manchmal ein Unendliches einführt
Schleife in das Programm, das reduziert wird. Wenn also der Interessantheitstest ausgeführt wird
Wenn Sie ein kompiliertes Programm verwenden, sollte dies wahrscheinlich innerhalb einer Zeitüberschreitung erfolgen.
Ein kurzes Beispiel: Wenn Sie eine Datei als interessant erachten, wenn der Vektorisierer von GCC ausgelöst wird
Beim Kompilieren können Sie diesen Interessantheitstest verwenden:
gcc -w -O3 foo.c -S && grep xmm foo.s
Um zu sehen, ob Ihr Interessantheitstest funktioniert, führen Sie die folgenden Befehle aus:
DIR=`mktemp -d` cp file_to_reduce [optional, weitere zu reduzierende Dateien] $DIR cd $DIR
/path/to/interestingness_test echo $?
Dies sollte dazu führen, dass „0“ an das Terminal zurückgegeben wird. Geschieht dies nicht, erfolgt die
Der Interessantheitstest ist fehlerhaft und C-Reduce kann ihn nicht nutzen.
Wenn Sie noch nie einen Interessantheitstest geschrieben haben, lesen Sie bitte dieses Tutorial
Zusätzliche Hinweise:
https://embed.cs.utah.edu/creduce/using/
Wenn möglich, führen Sie C-Reduce für vorverarbeiteten Code aus, der beispielsweise mit Folgendem generiert wurde:
gcc -E -P Datei.c
Wenn Sie den vorverarbeiteten Code nicht reduzieren können, können Sie entweder nur den nicht vorverarbeiteten Code reduzieren
Datei oder führen Sie eine Multi-Datei-Reduktion für die Datei und ihre transitiven Includes (bzw
jede Teilmenge davon). Im ersten Fall müssen Sie CREDUCE_INCLUDE_PATH festlegen
Umgebungsvariable in eine durch Doppelpunkte getrennte Liste von Include-Verzeichnissen einfügen
clang_delta, um sie zu finden.
Wenn Ihr Interessantheitstest einen Cross-Compiler und die Eigenschaften des
Wenn sich das Cross-Target vom Host unterscheidet, müssen Sie CREDUCE_TARGET_TRIPLE entsprechend einstellen
Kreuzziel. Dies ist besonders wichtig, wenn Sie mit nicht vorverarbeitetem Code arbeiten
und verwenden Sie CREDUCE_INCLUDE_PATH.
Drücken Sie jederzeit „s“, um zum nächsten Durchgang zu springen (diese Funktion ist deaktiviert, es sei denn, die Perl
Modul Term::ReadKey ist auf Ihrem System verfügbar).
Zusammenfassung of Optionen:
--add-pass
Fügen Sie den angegebenen Durchgang zum Zeitplan hinzu
--auch-interessant
Ein Prozess-Exit-Code (irgendwo im Bereich 64–113 wäre üblich), der wann
vom Interessantheitstest zurückgegeben wird, veranlasst C-Reduce, eine Kopie davon zu speichern
Variante [Standard: -einer]
--debuggen
Debug-Informationen drucken
--die-on-pass-bug
Beenden Sie C-Reduce, wenn bei einem Durchgang ein ansonsten nicht schwerwiegendes Problem auftritt
--max-Verbesserung
Größte Verbesserung der Dateigröße durch eine einzige Transformation, die C-Reduce erreichen sollte
akzeptieren (nur nützlich, um C-Reduce zu verlangsamen)
--N
Anzahl der zu verwendenden Kerne; C-Reduce versucht automatisch eine gute Einstellung auszuwählen, aber das ist nicht der Fall
Die Auswahl ist für Ihre Situation möglicherweise zu niedrig oder zu hoch [Standard: 2]
--no-default-passes
Beginnen Sie mit einem leeren Durchlaufplan
--nicht aufgeben
Geben Sie einen Durchgang nicht auf, der seit 50000 Iterationen keine Fortschritte gemacht hat
--kein Töten
Warten Sie, bis parallele Instanzen von selbst beendet werden, anstatt sie zu beenden (nur).
nützlich zum Debuggen)
--print-diff
Durch Transformationen vorgenommene Änderungen zum Debuggen anzeigen
--desinfizieren
Versuchen Sie, Details aus der ursprünglichen Quelldatei zu verschleiern
--save-temps
Nicht löschen /tmp/creduce-x Verzeichnisse bei Beendigung
--shaddap
Unterdrücken Sie die Ausgabe über nicht schwerwiegende interne Fehler
--skip-initial-passes
Erste Durchgänge überspringen (nützlich, wenn die Eingabe bereits teilweise reduziert ist)
--skip-key-off
Deaktivieren Sie das Überspringen des Rests des aktuellen Durchgangs, wenn „s“ gedrückt wird
--slowww
Bemühen Sie sich stärker um die Reduzierung, aber es kann sein, dass es lange dauert, dies zu tun
--ordentlich Erstellen Sie nicht von jeder Datei eine Sicherungskopie, um sie als file.orig zu reduzieren
--zeitliche Koordinierung
Drucken Sie Zeitstempel über den Reduktionsfortschritt
Verwendung: creduce [Optionen] interessantkeit_test file_to_reduce [optional, weitere Dateien zu
reduzieren]
creduce --help zu weiteren Informationen und Erklärungen
Nutzen Sie Creduce online über die Dienste von onworks.net