2 Stimmen

wie man verschiedene Speichersegmente und deren Größe in Linux findet

Ich bin neu bei Linux. Ich möchte die Startadresse und die Größe der verschiedenen Segmente (wie Stack, Heap, Daten usw.) und ihre aktuelle Nutzung kennen.

Ich möchte wissen, wie man sowohl im laufenden Prozess als auch im Kernspeicherabzug suchen kann.

Vielen Dank im Voraus.

7voto

Fredrik Pihl Punkte 42950

Beginnen Sie mit einem Blick in die proc(5) Dateisystem. man ist Ihr Freund.

/proc/[number]/maps Eine Datei mit den aktuell zugeordneten Speicherbereichen und deren Zugriffsberechtigungen

in gdb, können Sie

$ gdb -q
(gdb) help info proc
Show /proc process information about any running process.
Specify any process id, or use the program being debugged by default.
Specify any of the following keywords for detailed info:
  mappings -- list of mapped memory regions.
  stat     -- list a bunch of random process info.
  status   -- list a different bunch of random process info.
  all      -- list all available /proc info.

sehen Sie sich info proc mappings Es funktioniert jedoch nicht, wenn kein /proc vorhanden ist (z. B. bei der Pos-Mortem-Debugging-Funktion).

2voto

goldenmean Punkte 17498

objdump unter Linux gibt Informationen über eine Binärdatei. Siehe man objdump. Es gibt - Abschnitte, Disassemblierung, Debugging-Symbole.

objdump -h <binary> 

objdump --section=name 

Besser ist es, wenn möglich (wenn Sie die ausführbare Datei selbst aus dem Quellcode erstellen können), eine Map-Datei zu erzeugen, während Sie den Quellcode kompilieren und linken, indem Sie eine entsprechende Compiler/Linker-Option angeben. Die Map-Datei enthält sicher alle Informationen über die Größe und die Anfangsadressen der verschiedenen Abschnitte.

2voto

hagello Punkte 2433

Es gibt die pmap Befehl. Er zeigt die verfügbaren Informationen in /proc/PID/maps auf unterschiedliche Weise. Außerdem werden Kopf- und Summenzeilen hinzugefügt. Dies könnte für Sie lesbarer sein als die /proc/PID/maps Pseudo-Datei.

Leider ist es nicht in der Lage, Core Dumps zu analysieren.

0voto

Bnkr Ndpl Punkte 1

Verwenden Sie `maintenance info sections' in gdb, um alle Segmente, die in den Prozessadressraum eingeordnet sind, auszudrucken.

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