Frage

Kann hier jemand mir sagen, ob es etwas ähnliches wie LD_PRELOAD auf neuere Versionen von AIX ist? Genauer gesagt muss ich Anrufe von meinem Binary time () abzufangen, eine konstante Zeit zurückkehrt, zu Testzwecken.

War es hilfreich?

Lösung

AIX 5.3 eingeführt, um die LDR_PRELOAD (für 32-Bit-Programme) und LDR_PRELOAD64 (für 64-Bit-Programme) Variablen. Sie sind analoger auf Linux LD_PRELOAD. Beide sind durch Doppelpunkt getrennte Listen von Bibliotheken und Symbole werden präventiv aus dem genannten Shared Objects, bevor irgendetwas anderes geladen werden.

Zum Beispiel, wenn Sie ein gemeinsam genutztes Objekt foo.so haben:

 LDR_PRELOAD=foo.so

Wenn Sie Archive verwenden, verwenden Sie die AIX-Stil, das Objekt innerhalb des Archivs angeben:

 LDR_PRELOAD="bar.a(shr.so)"

Und trennen mehrere Einträge mit einem Doppelpunkt:

 LDR_PRELOAD="foo.so:bar.a(shr.so)"

Andere Tipps

AIX 5L verwendet die LDR_PRELOAD Variable.

Nicht, dass ich wüsste. Nächste Sache, wir (mit malloc / free für das Debuggen) getan haben, ist zu

  • Erstellen Sie eine neue Bibliotheksdatei nur mit den gewünschten Funktionen (denselben Namen wie Original).
  • legen Sie sie in einem anderen Verzeichnis mit dem Original.
  • eine Abhängigkeit von unserer Bibliotheksdatei zum Original machen.
  • Ändern Sie den LD_LIBRARY_PATH (oder SHLIB_PATH?) Unserer Bibliothek an erster Stelle in der Suchkette.

Auf diese Weise unsere Funktionen wurden zuerst von dem Lader abgeholt, alle, die wir nicht von den ursprünglichen zur Verfügung gestellt haben liefern.

Das war vor einer Weile. AIX 5L sollte viel mehr wie Linux sein (daher die L), so kann es in der Lage sein, genau das zu tun, was Sie benötigen.

Wenn Sie alternativ die Quelle haben, munge die Anrufe auf die Zeit () mit mytime () und Ihre Funktion zur Verfügung stellen. Sie sind nicht testen genau die gleiche Software, aber die Unterschiede für diese Art von minimal ändern sollten keine Rolle spielen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top