ktrace/Mac kann weniger als strace/Linux?

ratti

ratti

Aktives Mitglied
Thread Starter
Dabei seit
09.05.2004
Beiträge
1.521
Reaktionspunkte
56
Hallo,

auch wenn ich kein Programmierer bin, nutze ich gerne unter Linux eine Befehlskonstruktion wie "strace -e=file einprogramm". Ich habe jetzt grad nicht im Kopf, ob es wirklich -e war, jedenfalls sieht man dann schön, welche Dateien ein Programm sucht und anfasst.

Das ist sehr praktisch, weil man dann herausfindet, dass man an der falschen Configdatei schraubt, noch eine alte Library rumliegen hatte, welche Datei einem Tool fehlt, etc, usw, usf…

Unter Mac OS habe ich ktrace gefunden, aber das scheint das nicht zu können. Ich habe den Eindruck, dass es alle Dateien auflistet, die ausgeführt werden, aber keine, die gesucht, gelöscht, gelesen, angelegt (…) werden.


Beispiel: Ich habe von einem Druckertreiber nur einen Installer, möchte aber ein Paket zur Verteilung per Netz machen. Also will ich wissen, welche Dateien der Installer installiert:

Starten der installation:
ktrace -f /tmp/egal -i open ./OSX\ installer

(machen, machen, machen)

ktrace -C

Danach Auswertung. Ich weiss, dass das Programm u.a. den Ordner /Library/Frameworks/harmony.framework anlegt. Aber:

kdump -f /tmp/egal | grep 'harmony.framework'
(kommt nix)

Pustekuchen. Also, Frage: Wie kann ich die Dateisystemzugriffe eines Prozesses incl. Kindern unter Mac OS X tracen?

Danke,
Jörg
 
Sitz' noch in der Firma, daher kein Zugriff auf meinen Mac, aber hast du schon nachgeschaut ob es den strace in Fink oder Macports gibt?
 
  • Gefällt mir
Reaktionen: ratti
Sitz' noch in der Firma, daher kein Zugriff auf meinen Mac, aber hast du schon nachgeschaut ob es den strace in Fink oder Macports gibt?

Mensch, prima Idee. Aber leider, leider… Fink habe ich extra installiert und kein strace gefunden. Googeln ergab dann, dass das auch tatsächlich fehlt, und bei Macports auch.

Schade.

Gruß,
Jörg
 
Laut Ivan Ristic - Apache Security heißt der Befehl
"truss" unter Unix.
 
Abgesehen von den Trace-Werkzeugen sollte auch folgendes funktionieren:

<passiv> mit Pacifist die Receipt-Datei des Treibers unter /Library/Receipts anschauen

oder

<aktiv> mit --> http://www.kernelthread.com/software/fslogger die Installation live beobachten
 
  • Gefällt mir
Reaktionen: ratti
@ratti
kdump
/usr/bin/kdump displays the kernel trace files produced with ktrace in human readable format.


EDIT: Sh.. kdump hast du ja selber schon gefunden. Wer (zu Ende) lesen kann ist klar im Vorteil.

EDIT: Hast du bei ktrace die Optionen "d" und "i" gesetzt? Hast du bestimmte Tracepoints gesetzt?
In meinen Traces konnte ich Dateizugriffe nachvollziehen.

. . . trotzdem find ich sowohl "strace -tt -fF -e type=file", als auch "truss" viel effektiver. Oder ich hab mich (bedingt durch einsetzenden Altersstarrsinn) einfach noch nicht umgewöhnen können . . .


?=?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ratti
Abgesehen von den Trace-Werkzeugen sollte auch folgendes funktionieren:

<passiv> mit Pacifist die Receipt-Datei des Treibers unter /Library/Receipts anschauen

oder

<aktiv> mit --> http://www.kernelthread.com/software/fslogger die Installation live beobachten

Hallo,

ein Receipt gibt es nicht, weil es sich ja nciht um ein Paket handelt. Genau das will ich aus dem Installer aber ja erst selbst machen.

Allgemein geht es aber nicht bloß um diesen Installer, ich will generell öfters mal wissen, welches Programm woran rumspielt. :)


Dieser fslogger sieht gut aus! Denn lad ich grad runter. Danke!

Gruß,
Jörg
 
EDIT: Hast du bei ktrace die Optionen "d" und "i" gesetzt? Hast du bestimmte Tracepoints gesetzt?

Mit d und i wird es mehr, leider sind Dateien nicht dabei, von denen ich weiss, dass er sie anfasst. Schade.

Tracepoints - Nein, ich weiss zwar so ungefähr, was das ist, sehe aber keinen Sinn drin: Ich will ja alles haben, nicht bloß bestimmte Sachen. Wüsste jetzt aber auch nicht, wie ich welche fände… :)

Gruß und Danke,
Jörg
 
Zurück
Oben Unten