Gibt es Tools zum Anzeigen / Bearbeiten des User Space-Speichers laufender Prozesse unter Linux?
Es wäre ein großartiges Lernwerkzeug.
Gibt es Tools zum Anzeigen / Bearbeiten des User Space-Speichers laufender Prozesse unter Linux?
Es wäre ein großartiges Lernwerkzeug.
Antworten:
Der Speicher eines Prozesses ist als Datei verfügbar, /proc/12345/mem
wobei 12345 die Prozess-ID ist. Sie werden jedoch noch eine Weile nichts direkt daraus lernen können. Das erste, was Sie herausfinden müssen, ist, welche Teile zugeordnet sind. Diese Informationen sind in /proc/12345/maps
und verfügbar /proc/12345/smaps
. Einträge in /proc
sind in der Kerneldokumentation unter dokumentiert Documentation/filesystems/proc.txt
. Der lsof
Befehl gibt Informationen zu Dateien, die der Prozess dem Speicher zugeordnet hat, besser lesbar.
Es kann lehrreicher sein, den laufenden Prozess mit einem Debugger zu betrachten. Der übliche Debugger unter Linux ist Gdb . Gdb hat eine einfache Kommandozeilenschnittstelle; DDD und Emacs bieten benutzerfreundlichere Schnittstellen. Die besten Ergebnisse erzielen Sie, wenn Sie sich ein Programm ansehen, das noch Debugging-Symbole enthält und dessen Quelle verfügbar ist (dh ein Programm, mit dem Sie gerade kompiliert -g
haben und das Sie nicht entfernt haben).
Sie sollten auch wissen, strace
wie Sie die Systemaufrufe überwachen, die ein Prozess ausführt, und ltrace
(einige) Bibliotheksaufrufe überwachen.