Sehr tiefes Profiling (Tools?)
-
Hi,
ich hab (mal wieder -.-) folgendes Problem:
Ich hab hier ein recht umfangreiches Framework, welches von Windows auf Linux portiert wurde (werden soll). Es besteht aus einigen Bibliotheken die recht stark voneinander abhängig sind (jedoch zum Großteil nur in eine Richtung).
Nun hab ich das Problem, dass sobald die "Hauptbibltiothek" in einer Testapplikation mit linke, ein Aufruf einer Fremdbibliothek mit einem SIGSEGV fehl schlägt. Sobald ich unsere Bibliothek nicht mit linke geht alles wunderbar. Da der Fehler schon alleine durch das linken unserer Bibliothek auftritt, muss der Fehler irgendwo bei der initalisierung statischer Objekte auftreten.
Ok, so weit kann ich den Fehler also einkreisen, jetzt würd ich ihn gerne noch fest nageln. Hierzu bräuchte ich einen Profiler der tief genung vorstoßen kann. Valgrind z.B. macht hier schlapp. Kennt jemand von euch einen Profiler der so tief runter geht und Fehler beim Laden von dynamischen Bibliotheken feststellen kann?
Und wenn wir schon beim Thema sind. Ich dachte Linux verwendet lazy binding, wieso lädt der mir dann die Bibltiothek obwohl ich sie im gesamten Programm gar nicht verwende? Ich dachte lazy binding bedeutet, dass die Funktionen erst dann geladen werden wenn sie auch wirklich verwendet werden?

Edit: Ich glaube das ist das falsche Forum, sorry

-
ich kann dir ein programm empfehlen und zwar den depencie walker der zeigt dir an welche dll und libs die exe braucht und welche er geladen hat und was für funktionen und welchen dlls drinne sind. Musst dann mal nach googlen
MFG
-
Das Problem ist, dass ich das Tool unter Linux brauche. Der Dependency Walker ist, so weit ich weiß, ein Microsoft Tool. Aber trotzdem danke

-
BugJoe schrieb:
Das Problem ist, dass ich das Tool unter Linux brauche. Der Dependency Walker ist, so weit ich weiß, ein Microsoft Tool. Aber trotzdem danke

Also falls du ein Gegenstück zum Dependency Walker auf Linux suchst, was meiner Meinung nach, aus deiner Beschreibung nicht unbedingt hervorgeht, dann wäre das wohl das Konsolenkommando ldd.
Zum "Lazy Binding":
Mir persönlich wäre neu, dass Linux ausschliesslich Lazy Binding einsetzt. Aber ich bin kein Linux Experte. Also hat die Aussage 0 Wert.
Edit: Der Dependency Walker ist übrigens, soweit ich das weiss, kein Tool von Microsoft. Es wird einfach nur mit Visual Studio ausgeliefert. Ich sehe auf der Website jedenfalls kein Copyright by Microsoft:
http://www.dependencywalker.com/

Grüssli
-
Du brauchst keinen Profiler, sondern einen Debugger.
Hast du schon versucht das Programm einfach mit gdb zu debuggen?
-
Ja, ich habs schon mit gdb gedebugt. Leider komme ich damit auch nicht näher an benötigte Informationen ran.