3 Stimmen

Wie baut man DTrace auf Mac OS X?

Ich versuche, das DTrace-Ziel im Xcode-Projekt zu erstellen, wie es hier empfohlen wird:

http://osx86.boeaja.info/2009/10/building-xnu-kernel-on-snow-leopard/

Aber ich bekomme die Fehlermeldung: libproc.m:24:49: error: CoreSymbolication/CoreSymbolication.h: Datei oder Verzeichnis nicht gefunden

Ich weiß, dass CoreSymbolication ein privates Framework ist, aber Apple muss dieses Header irgendwo zur Verfügung stellen, damit ich Dtrace erstellen kann, richtig? Kann mir jemand die erforderlichen Dateien zur Erstellung von Dtrace zeigen?

0 Stimmen

DTrace ist in den standardmäßigen Lieferkern in Snow Leopard eingebaut. Was genau möchtest du tun?

0 Stimmen

Ich möchte es von Grund auf neu aufbauen. Ich dachte, das wäre Teil des Deals mit einem Open-Source (CDDL)-Paket, aber vielleicht muss Apple nicht alle Teile bereitstellen, um dies wahr zu machen?

1voto

Dan Punkte 6440

Wie Sie wahrscheinlich herausgefunden haben, muss Apple nur Teile des Kernels veröffentlichen, die aus anderen Open-Source-Projekten stammen, und das umfasst nicht die Benutzerland-Bibliotheken, die sie auf dem Kernel aufbauen. CoreSymbolication/CoreSymbolication.h klingt jedoch sehr nach einem Userspace-Header für Obj-C, sodass Sie wahrscheinlich die Kernel-DTrace-Dienstprogramme auch ohne ihn erstellen können. (Obwohl ich mich auch irren könnte.)

Ich vermute, es wird für die Symbolidentifikation im Benutzerland-Befehl dtrace(1m) verwendet. Wenn es nur ein Tool gäbe, das uns bei der Lösung dieses Rätsels helfen könnte... :-D

# dtrace -n 'pid$target:CoreSymbolication::entry {}' -c 'dtrace -ln syscall::write:entry'
dtrace: Die Beschreibung 'pid$target:CoreSymbolication::entry ' passte zu 246 Sonden
   ID   PROVIDER            MODULE                          FUNCTION NAME
  147    syscall                                               write entry
dtrace: pid 88089 has exited
CPU     ID                    FUNCTION:NAME
  2   6538 CSSymbolOwnerGetRegionWithName:entry 
  2   5014 CSSymbolOwnerForeachRegionWithName:entry 
  2   5078      CSRegionForeachSymbol:entry 
  2   6495 CSSymbolicatorGetSymbolOwnerWithUUIDAtTime:entry 
  2   6493 CSSymbolicatorForeachSymbolOwnerWithUUIDAtTime:entry 
  2   6494 CSSymbolicatorForeachSymbolOwnerWithCFUUIDBytesAtTime:entry 
  2   5048  CSSymbolOwnerGetDataFlags:entry 
  2   6538 CSSymbolOwnerGetRegionWithName:entry 
  2   5014 CSSymbolOwnerForeachRegionWithName:entry 
  2   5078      CSRegionForeachSymbol:entry 
  2   5092         CSSymbolIsExternal:entry 
  2   5092         CSSymbolIsExternal:entry
  ...

Sieht so aus, als würde die Bibliothek jedenfalls vom Befehl dtrace verwendet.

0 Stimmen

Umgekehrte Header sind hier verfügbar - github.com/mountainstorm/CoreSymbolication (haben sie selbst nicht ausprobiert, also keine Ahnung, wie gut sie sind)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X