Heim > Artikel > Betrieb und Instandhaltung > Was ist Core unter Linux?
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.
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 Verzeichnisulimit -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!