5 Stimmen

Wie kann ich unter OS X die Systembibliotheken debuggen?

Ich debugge gerade eine Cocoa-Anwendung, die die Systembibliotheken aufruft. Ich erhalte Debugsymbole für meinen eigenen Code, aber nicht die Systembibliotheken, was mich daran hindert, weiter zu debuggen. Wie kann ich Debugsymbole für die Systembibliothek erhalten.

Ich verwende gdb und kompiliere gegen das 10.5 SDK auf 10.6.4 (gcc 4.2).

Hier ist der Stack-Trace, für den ich gerne Symbole erhalten würde:

(gdb) bt
#0  0x93713e43 in CFQSortArray ()
#1  0x936f4c49 in CFArraySortValues ()
#2  0x958f0bc0 in ColorSyncProfileCopyTagSignatures ()
#3  0x9591d218 in CMMProfile::Usable ()
#4  0x9591cb5d in DoValidateProfile ()
#5  0x9591cc75 in AppleCMMValidateProfile ()
#6  0x958f1e52 in ColorSyncProfileVerify ()
#7  0x91b13b88 in validateProfile ()
#8  0x91b13aed in CMSValidateProfile ()
#9  0x93b27f6c in CGCMSInterfaceValidateProfile ()
#10 0x93b27f4c in CGCMSUtilsValidateProfile ()
#11 0x93b27e4b in CGColorSpaceCreateICCBased ()
#12 0x93b27203 in create_generic_color_space ()
#13 0x93b26f92 in CGColorSpaceCreateWithIndex ()
#14 0x90228ad5 in +[NSColorSpace specialColorSpaceWithID:] ()
#15 0x90228a0c in +[NSColorSpace genericRGBColorSpace] ()
#16 0x9022881e in -[NSBitmapImageRep _bitmapImageRep_setColorSpaceName:] ()
#17 0x904f6e39 in -[NSBitmapImageRep initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:] ()
#18 0x902282ae in -[NSBitmapImageRep _initWithSharedBitmap:rect:] ()
#19 0x90227efe in -[NSImage _addRepresentationWithSharedKitWindow:rect:] ()
#20 0x90226d06 in +[NSImage _findSystemImageNamed:] ()
#21 0x90226a48 in +[NSImage imageNamed:] ()
#22 0x902268ea in -[NSCustomResource _loadImageWithName:] ()
#23 0x9022681e in -[NSCustomResource loadImageWithName:] ()
#24 0x90225d5f in -[NSCustomResource awakeAfterUsingCoder:] ()
#25 0x915a2208 in _decodeObjectBinary ()
#26 0x915a14e4 in _decodeObject ()
#27 0x9022556f in -[NSMenuItem initWithCoder:] ()
#28 0x915a21ec in _decodeObjectBinary ()
#29 0x915a2ff8 in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] ()
#30 0x915a3665 in -[NSArray(NSArray) initWithCoder:] ()
#31 0x915a21ec in _decodeObjectBinary ()
#32 0x915a14e4 in _decodeObject ()
#33 0x90229ff0 in -[NSMenu initWithCoder:] ()
#34 0x915a21ec in _decodeObjectBinary ()
#35 0x915a2ff8 in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] ()
#36 0x915a3665 in -[NSArray(NSArray) initWithCoder:] ()
#37 0x915a21ec in _decodeObjectBinary ()
#38 0x915a14e4 in _decodeObject ()
#39 0x9021ff29 in -[NSIBObjectData initWithCoder:] ()
#40 0x915a21ec in _decodeObjectBinary ()
#41 0x915a14e4 in _decodeObject ()
#42 0x9021f4a8 in loadNib ()
#43 0x9021eb5b in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] ()
#44 0x9021e811 in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] ()

1voto

Paul Biggar Punkte 25771

Wie in dieser Apple TechNote beschrieben, müssen Sie DYLD_IMAGE_SUFFIX auf _debug setzen.

http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html

dann gibt es weitere Probleme (nicht die richtige Version auf dem richtigen System), die schwer zu überwinden sind, daher habe ich dies nicht getestet.

0voto

Nikolai Fetissov Punkte 79627

Ich bezweifle, dass Sie in den Systembibliotheken etwas anderes als Link-Symbolnamen finden werden. Sicherlich keine Informationen über Zeilennummern und keinen Quellcode (es handelt sich um ein kommerzielles Produkt mit geschlossenem Quellcode). Das Beste, was Sie tun können, ist, die Assembler-Anweisungen in diesen Funktionen durchzugehen.

Sie können verwenden gdb finish so lange ausgeführt, bis der ausgewählte Stack-Frame zurückkehrt. Machen Sie das mehrmals, um zu Ihrem Anwendungscode zurückzukehren. Oder einfach next über die Funktionsaufrufe der Bibliothek.

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