Ich entwickle eine statisch verknüpfte 64-Bit-C++ - Anwendung auf 64-Bit-CentOS 5.8 unter Verwendung der Standard-gcc 4.4-Pakete aus den CentOS-Repositories. Es scheint mehr Speicher zu verwenden, als ich erwartet hatte, also habe ich versucht, die Speicherbelegung mithilfe von Massiv darzustellen. Ich habe mit Debug-Informationen kompiliert und dannValgrinds Massif-Tool profiliert meine Anwendung nicht
valgrind --tool = laufen ./MyProg
aus dem Verzeichnis Massiv, wo myprog befindet. Es erzeugt keine anderen Ergebnisse als das folgende Beispiel "massif.out.XXXX".
Beachten Sie, dass das der gesamte Inhalt der Datei ist und mein Programm für viele Minuten ausgeführt werden kann.
Ich habe verschiedene Möglichkeiten versucht, valgrind und massiv vergeblich. Ich habe sogar versucht, den absoluten Pfad zu MyProg zu verwenden, nur für den Fall. Ich habe versucht, die neueste stabile Version von Valgrind (3.8.1) herunterzuladen und das zu kompilieren und auszuführen (da CentOS 3.5.0 verwendet) mit dem gleichen Ergebnis. Als Plausibilitätsprüfung lief ich
valgrind --tool = Massiv ls -l
und es erzeugt mehrere Snapshots mit Nicht-Null-Speichernutzung, wie erwartet.
Ich habe versucht, online mit jeder Kombination von Keywords, die ich denken konnte, aber keine ähnlichen Probleme gefunden.
Als eine Randnotiz, kann ich die Anwendung mit Valgrinds Standard-Memcheck-Tool erfolgreich profilieren, falls das nützliche Informationen sind.
Weiß jemand, warum Massiv meine Anwendung nicht profilieren würde?
Ist Ihr Programm statisch verknüpft? Wenn Sie ein "ldd ./MyProg" machen, listet es eine Reihe von gemeinsam genutzten Bibliotheken auf oder druckt es nichts? –
Es ist statisch verknüpft. Ich habe die Frage bearbeitet, um dies zu klären. – Tyson