Werkzeug ähnlich wie "strace", jedoch für CPU-Anweisungen

341
drjrm3

Ich hoffe, etwas Ähnliches zu stracefinden, das die von der CPU verwendeten Anweisungen ergibt. Zum Beispiel habe ich eine einfache Schleife, die eine Summe berechnet und jede zehnte Iteration ausgibt

float fsum = 0.0; for(int i = 0; i < 1000; i++) { if(i%10==0) { fprintf(stderr, "%10.5f%%\n", 100.0*float(i)/float(1000)); } fsum += 1.0/float(i); } 

Nun stracewerden Informationen über die fprintfAnweisung angegeben, da es sich um eine write(2Anweisung handelt, jedoch keine Informationen über die Summierungsschritte. Wenn ich Informationen zu einem aktuell laufenden Programm einschließlich der verwendeten CPU-Anweisungen erhalten möchte, gibt es eine Möglichkeit, dies zu tun?

HINWEIS: Ich kenne Tools gprof, die zuvor kompiliert werden müssen. Ich suche nach einem Weg, um die gleichen Informationen zu finden, gprofdie Sie möglicherweise erhalten, aber mit einem aktuell laufenden Programm, das möglicherweise mit Blick auf das Profiling kompiliert wurde oder nicht.

0
Was ist mit 'gdb': https://www.gnu.org/software/gdb/ ..? txtechhelp vor 9 Jahren 0
Vielleicht irre ich mich aber ich dachte nicht, dass gdb sich an ein bereits laufendes Programm anschließen könnte, oder? drjrm3 vor 9 Jahren 0
yup: `gdb prorgram 1234` wobei` 1234 'die PID des Programms ist, an das Sie anhängen möchten; Wenn Sie nicht eine Datei in dem Verzeichnis haben, in dem Sie gdb mit dem Namen 1234 ausführen, wird versucht, die Datei zu debuggen, andernfalls die PID. Sie können keine vollständigen Ausführungsstapel (dh vollständige Funktionsnamen der Dinge im Programm selbst) sehen, wenn Sie nicht die Debugsymbole für dieses bestimmte Programm haben. Sie können jedoch einiges davon sehen (einschließlich der Assembly). dh CPU-Anweisungen) txtechhelp vor 9 Jahren 0

0 Antworten auf die Frage