Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist Core unter Linux?

Was ist Core unter Linux?

藏色散人
藏色散人Original
2023-03-23 10:00:502761Durchsuche

Unter Linux ist Core ein Speicherabbild mit hinzugefügten Debugging-Informationen. Wenn ein Programm unter Linux beendet wird oder abnormal beendet wird, verwenden wir die Core-Datei zur Analyse, die den Speicher, Register, Stapelzeiger usw. enthält, wenn das Programm ausgeführt wird Laufende Informationen im ELF-Format können als Speichern des aktuellen Status des Programms in einer Datei verstanden werden.

Was ist Core unter Linux?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Was ist Core unter Linux?

Detaillierte Erklärung zur Verwendung von Kerndateien unter Linux

Manchmal wird das Programm ohne Protokolle beendet. Zu diesem Zeitpunkt können Sie die Codedatei zur Analyse verwenden. Es zeichnet den Speicher, die Register, den Stapelzeiger und andere auf Informationen zum laufenden Programm

Kerndatei:

Wenn ein Programm unter Linux beendet oder abnormal beendet wird, verwenden wir normalerweise die Kerndatei zur Analyse, die den Speicher, Register, Stapelzeiger und andere Informationen enthält, wenn das Programm ausgeführt wird. Das Format ist ELF, das als Programm verstanden werden kann. Der aktuelle Status der Arbeit wird in einer Datei gespeichert. Durch die Analyse dieser Datei mit einem Tool können wir den entsprechenden Stapelaufruf und andere Informationen lokalisieren, wenn das Programm abnormal beendet wird. um zur Lösung des Problems beizutragen.

Kerndatei-Debugging verwenden

Generierungsmethode

Status der aktuellen Kerndatei anzeigen

$ ulimit -a
...
-c: core file size (blocks)   0 # 关闭状态
...

Generierungsschalter einschalten

ulimit -c unlimited
ulimit -a
...
-c: core file size (blocks)   unlimited
...

Begrenzen Sie die Größe der Kerndatei in Blöcken, im Allgemeinen 1 Block = 512 Bytes, Wenn die Einstellung zu klein ist, wird die Datei möglicherweise nicht generiert.

$ ulimit -c 1024
$ ulimit -a
...
-c: core file size (blocks)   1024
...

Schalten Sie den Generierungsschalter aus Der entsprechende Vorgang muss in /etc/profile geschrieben werden.

Die Kerndatei wird standardmäßig im Arbeitsverzeichnis des Programms generiert. Sie müssen sicherstellen, dass genügend Speicherplatz vorhanden ist und Schreibberechtigung für das entsprechende Verzeichnis

ulimit -c 0
ulimit -a
...
-c: core file size (blocks)   0
...
Die bei der Benennung verwendete Parameterliste
echo /MyCoreDumpDir/core.%e.%p > /proc/sys/kernel/core_pattern

/proc/ Wenn der Wert der Datei sys/kernel/core_uses_pid 1 ist, wird unabhängig davon, wann %p konfiguriert ist, die endgültig generierte Kerndatei erstellt pid hinzufügen

Debugging-Methode

Sie können GDB zum Debuggen der Kerndatei verwenden und müssen diese beim Kompilieren mitbringen -g-Option

%p - insert pid into filename # 添加 pid 
%u - insert current uid into filename # 添加当前 uid 
%g - insert current gid into filename # 添加当前 gid 
%s - insert signal that caused the coredump into the filename # 添加导致产生 core 的信号 
%t - insert UNIX time that the coredump occurred into filename # 添加 core 文件生成时的 unix 时间 
%h - insert hostname where the coredump happened into filename # 添加主机名 
%e - insert coredumping executable name into filename # 添加命令名

Wenn Sie die vom eingebetteten Gerät auf dem PC generierte Kerndatei debuggen müssen Nach der Eingabe von gdb müssen Sie das GDB-Tool der entsprechenden Plattform auswählen und den Speicherort der Symboldatei festlegen

Das obige ist der detaillierte Inhalt vonWas ist Core unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn