suchen

Was bedeutet Linux-Core?

Apr 21, 2023 pm 07:14 PM
linux

In Linux bedeutet Core Speicher. Wenn während der Ausführung des Programms eine Ausnahme erkannt wird und das Programm abnormal beendet wird, speichert das System den aktuellen Speicherstatus des Programms in einer Kerndatei, die als „Core Dump“ bezeichnet wird. Dabei handelt es sich auch um einen Informationsspeicherauszug, wenn das Betriebssystem eine Ausnahme erkennt Der aktuelle Prozess verwendet ein Signal, um den Zielprozess über die entsprechenden Fehlerinformationen zu informieren. Zu den gängigen Signalen gehören SIGSEGV, SIGBUS usw. Standardmäßig verfügt der Prozess über einen entsprechenden Verarbeitungsmechanismus, wenn er das entsprechende Signal empfängt.

Was bedeutet Linux-Core?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.

Bei der Entwicklung unter Linux hören wir oft, dass Programmierer sagen, dass der Kern meines Programms ausgefallen ist. Solche Probleme treten normalerweise aufgrund von Fehlern auf niedriger Ebene auf, wie z. B. Speicherzugriff außerhalb der Grenzen, Verwendung von Nullzeigern, Stapelüberlauf usw . Wenn das Programm während der Ausführung beendet wird oder abnormal beendet wird, werden Kerndateien generiert, wenn diese Bedingungen erfüllt sind.

Warum kommt es zu Coredump?

Core bedeutet Speicher. Dieses Wort stammt aus dem Material, das vor langer Zeit zur Speichererstellung verwendet wurde, und wird bis heute verwendet, wenn während der Ausführung des Programms eine Anomalie festgestellt wird Wenn das Programm abnormal beendet wird, speichert das System den aktuellen Speicherstatus des Programms in einer Kerndatei, die als „Core Dump“ bezeichnet wird und auch als „Information Dump“ bezeichnet wird. Wenn das Betriebssystem eine Ausnahme im aktuellen Prozess erkennt, benachrichtigt es den Zielprozess Die entsprechenden Fehlerinformationen werden über ein Signal übermittelt. Zu den gängigen Signalen gehören SIGSEGV, SIGBUS usw. Standardmäßig verfügt der Prozess über einen entsprechenden Verarbeitungsmechanismus, wenn er das entsprechende Signal empfängt.
Nehmen Sie Linux als Beispiel. Die roten Kästchen sind als allgemeine Signale markiert. Zuvor ist es am besten, das Speicherlayout des Prozesses zu verstehen Unix- und Linux-Systeme werden etwas anders sein, der Kernel-Speicherplatz wird kleiner sein als bei Linux, insbesondere der Kernel- und Benutzerprozesse verwenden einen separaten Adressraummodus:

Was bedeutet Linux-Core?

Der Speicher Speicherort der Coredump-Datei

Was bedeutet Linux-Core?Wir wissen, dass im Linux-System bei einem Prozessabsturz der Systemkern die Prozessabsturzinformationen erfasst und dann die Coredump-Informationen des Prozesses in eine Datei schreibt. Der Standarddateiname lautet Kern. Der Speicherort befindet sich im selben Verzeichnis wie das entsprechende ausführbare Programm. Sie können den Speicherort der Kerndatei über den folgenden Befehl anzeigen:


Core_pattern-Format:
%u (Zahl) Tatsächliche UID des gedumpten Prozesses Was bedeutet Linux-Core?%G (Zahl) Tatsächliche GID des gedumpten Prozesses
%s Anzahl der Signale, die den Dump verursacht haben

%t Zeit des Dumps, ausgedrückt als seit 1970 Anzahl der Sekunden seit dem 1. Monat 00:00:00 +0000 (UTC)
%H Hostname (identisch mit dem von uname(2) zurückgegebenen Knotennamen)

%e Name der ausführbaren Datei (kein Pfadpräfix)

%E Ja Der Pfadname von die ausführbare Datei, wobei Schrägstriche ('/') durch Ausrufezeichen ('!') ersetzt werden.
%C Weiche Ressourcenbeschränkung der Kerndateigröße für den Absturzprozess (seit Linux 2.6.24)


Das folgende Programm kann verwendet werden, um die Verwendung der Pipe-Syntax in der Datei /proc/sys/kernel/core_pattern zu demonstrieren.

#include <sys/stat.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define BUF_SIZE 1024

int main(int argc, char *argv[])
{
    int tot, j;
    ssize_t nread;
    char buf[BUF_SIZE];
    FILE *fp;
    char cwd[PATH_MAX];

   /* 属性的当前工作目录崩溃的过程*/

    snprintf(cwd, PATH_MAX, "/proc/%s/cwd", argv[1]);
    chdir(cwd);

   /* 将输出写到该目录下的文件"core.info" */

    fp = fopen("core.info", "w+");
	if (fp == NULL)
	{
		exit(EXIT_FAILURE);
	}


   fprintf(fp, "argc=%d\n", argc);
    for (j = 0; j < argc; j++)
	{
        fprintf(fp, "argc[%d]=<%s>\n", j, argv[j]);
	}

   /* 计算标准输入(核心转储)中的字节数*/

    tot = 0;
    while ((nread = read(STDIN_FILENO, buf, BUF_SIZE)) > 0)
	{
        tot += nread;
	}
	
    fprintf(fp, "Total bytes in core dump: %d\n", tot);

   return 0;
}

注意一下:  这里是指在进程当前工作目录的下创建。通常与程序在相同的路径下。但如果程序中调用了chdir函数,则有可能改变了当前工作目录。这时core文件创建在chdir指定的路径下。有好多程序崩溃了,我们却找不到core文件放在什么位置。和chdir函数就有关系。当然程序崩溃了不一定都产生  core文件。

下面通过的命令可以更改coredump文件的存储位置,如下:

echo “|$PWD/core_pattern_pipe_test %p UID=%u GID=%g sig=%s” > 
/proc/sys/kernel/core_pattern

cat /proc/sys/kernel/core_pattern 查看路径已经变为如下:

Was bedeutet Linux-Core?

下面带大家配置永久的core。只要出现内存访问越界、使用空指针、堆栈溢出等情况,都可以在这个目录下查看。

配置 core

1、首先在根目录下建立一个储存coredump文件的文件夹,命令如下:

mkdir /corefile

2、设置产生coredump文件的大小,命令如下:

ulimit -c unlimited

3、 执行以下两条命令:

echo “1” > /proc/sys/kernel/core_uses_pid       //将1写入到该文件里
echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern

将coredump产生的格式制定好写入core_pattern文件,这样当coredump产生时会直接以这种格式存入到根目录下的文件夹corefile中。

4、修改配置文件/etc/profile

vim /etc/profile

添加 ulimit -S -c unlimited > /dev/null 2>&1

Was bedeutet Linux-Core?

执行命令生效该文件

Was bedeutet Linux-Core?

5、 在配置文件/etc/rc.local中最后面添加信息(机器重启时会自动加载该命令):添加命令:

rm -rf /corefile/*

机器重启时清空该文件夹,由于产生的coredump文件很大,若不清空的话时间长了会将硬盘占满;

再执行以下两条命令:

echo “1” > /proc/sys/kernel/core_uses_pid
echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern

测试
下面写个例子测试一下是否配置好了corefile文件

#include int main(int argc, char *argv[]){ int *p = NULL; *p = 3; return 0; }

编译运行,注意这里需要-g选项编译。

Was bedeutet Linux-Core?

进入前面创建的corefile文件夹:

Was bedeutet Linux-Core?

出现core文件表示完成coredump配置。可以用通过readelf命令进行判断是否是core文件:

Was bedeutet Linux-Core?

Führen Sie gdb aus, um die Kerndatei zu lesen. Der Befehl lautet „GDB-Programm entsprechende Coredump-Datei“. Zu diesem Zeitpunkt geben Sie die GDB-Eingabeaufforderung „(gdb)“ ein. .

Was bedeutet Linux-Core?

Wie Sie dem roten Kästchen-Screenshot entnehmen können, wird das Programm aufgrund von Signal 11 beendet.

Sie können den Aufrufstapel der Funktion über den Befehl bt (backtrace) (oder wo) sehen:

Was bedeutet Linux-Core?
Das heißt, wenn das Programm bis Zeile 6 von test.cpp ausgeführt wird, tritt ein Segfault auf. Der Grund dafür ist, dass es auf einen Nullzeiger zeigt.


Zusammenfassung

Es gibt viele Gründe für den Programm-Coredump. Hier ist eine Zusammenfassung, hauptsächlich der Speicherzugriff von Grenzen, Verwendung von Thread-unsicheren Funktionen, Verwendung von Nullzeigern, Stapelüberlauf usw.


Ich möchte hier sagen, dass man beim Debuggen von Coredump mit GDB meistens nur den intuitiven Grund für den Kern aus der Kerndatei herausfinden kann, im Allgemeinen jedoch den grundlegenderen Grund muss zusammen mit dem Code analysiert werden. Nur aus der Betrachtung des laufenden Kontexts des Prozesses können wir schließen, wo das Problem im Programmcode liegt.


Verwandte Empfehlungen: „

Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas bedeutet Linux-Core?. 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
Linux -Wartungsmodus: den Zweck verstehenLinux -Wartungsmodus: den Zweck verstehenApr 28, 2025 am 12:01 AM

Der Wartungsmodus wird für die Wartung und Reparatur von Systemen verwendet, sodass Administratoren in einer vereinfachten Umgebung arbeiten können. 1. Systemreparatur: Reparieren Sie das beschädigte Dateisystem und den Startlader. 2. Passwort zurücksetzen: Zurücksetzen des Stammbenutzerkennworts. 3. Paketverwaltung: Softwarepakete installieren, aktualisieren oder löschen. Durch Ändern der GRUB -Konfiguration oder des Eingebens des Wartungsmodus mit bestimmten Schlüssel können Sie nach der Ausführung von Wartungsaufgaben sicher beenden.

Linux -Operationen: Netzwerk- und NetzwerkkonfigurationLinux -Operationen: Netzwerk- und NetzwerkkonfigurationApr 27, 2025 am 12:09 AM

Die Linux -Netzwerkkonfiguration kann in den folgenden Schritten ausgeführt werden: 1. Konfigurieren Sie die Netzwerkschnittstelle und verwenden Sie den Befehl IP, um die Einstellungen für die Persistenz der Konfigurationsdatei vorübergehend festzulegen oder zu bearbeiten. 2. Richten Sie eine statische IP ein, die für Geräte geeignet ist, die eine feste IP erfordern. 3. Verwalten Sie die Firewall und verwenden Sie die Iptables oder Firewall -Tools, um den Netzwerkverkehr zu steuern.

Wartungsmodus unter Linux: Ein SystemadministratorhandbuchWartungsmodus unter Linux: Ein SystemadministratorhandbuchApr 26, 2025 am 12:20 AM

Der Wartungsmodus spielt eine Schlüsselrolle in der Linux -Systemverwaltung und hilft bei der Reparatur, Aufrüstung und Konfigurationsänderungen. 1. Geben Sie den Wartungsmodus ein. Sie können es über das Grub -Menü oder den Befehl "sudosystemctlisolaterscue.target" auswählen. 2. Im Wartungsmodus können Sie die Reparatur und Systemaktualisierungsvorgänge von Dateisystemen durchführen. 3. Erweiterte Verwendung umfasst Aufgaben wie das Zurücksetzen des Stammkennworts. 4. Häufige Fehler wie die Nichteingabe des Wartungsmodus oder das Montieren des Dateisystems können durch Überprüfen der GRUB -Konfiguration und die Verwendung des Befehls fscK behoben werden.

Wartungsmodus unter Linux: Wann und warum verwenden Sie ihnWartungsmodus unter Linux: Wann und warum verwenden Sie ihnApr 25, 2025 am 12:15 AM

Das Timing und die Gründe für die Verwendung des Linux -Wartungsmodus: 1) Wenn das System startet, 2) bei der Durchführung großer Systemaktualisierungen oder -Upgrades, 3) bei der Durchführung von Dateisystemwartungen. Der Wartungsmodus bietet eine sichere und kontrollierte Umgebung, die die Sicherheit und Effizienz der betrieblichen Sicherheit gewährleistet, die Auswirkungen auf Benutzer verringert und die Systemsicherheit verbessert.

Linux: Wesentliche Befehle und OperationenLinux: Wesentliche Befehle und OperationenApr 24, 2025 am 12:20 AM

Unentbehrliche Befehle in Linux gehören: 1.LS: Listenverzeichnisinhalt; 2.CD: Arbeitsverzeichnis ändern; 3.MKDIR: Erstellen Sie ein neues Verzeichnis; 4.RM: Datei oder Verzeichnis löschen; 5.CP: Datei oder Verzeichnis kopieren; 6.MV: Datei oder Verzeichnis verschieben oder umbenennen. Diese Befehle helfen Benutzern, Dateien und Systeme effizient zu verwalten, indem sie mit dem Kernel interagieren.

Linux -Operationen: Verwalten von Dateien, Verzeichnissen und BerechtigungenLinux -Operationen: Verwalten von Dateien, Verzeichnissen und BerechtigungenApr 23, 2025 am 12:19 AM

In Linux verwendet die Datei- und Verzeichnisverwaltung LS-, CD-, MKDIR-, RM-, CP-, MV -Befehle und Berechtigungsverwaltung. 1. Datei- und Verzeichnisverwaltungsbefehle wie LS-L-Liste detaillierte Informationen, MKDIR-P erstellen rekursiv Verzeichnisse. 2. Befehle für Berechtigungsverwaltungen wie CHMOD755File -Dateiberechtigungen, CHOWNUSERFILE -Änderungen Dateibesitzer und CHGRPGroupFile -Änderungsdateigruppe. Diese Befehle basieren auf der Dateisystemstruktur sowie auf Benutzer- und Gruppensystemen sowie über Systemaufrufe und Metadaten.

Was ist der Wartungsmodus unter Linux? ErklärtWas ist der Wartungsmodus unter Linux? ErklärtApr 22, 2025 am 12:06 AM

MaintenancemodeInLinuxisaspecialBootenvironmentforcriticalSystemMaintenancetaSs.itAllowsAdministratorStoperformTasksSetPasswords, Reparaturfilmsysteme, andRecoveringingFrombootFailuresinimalenvironment.ToentermineCentontenanceMode, InterrupttheBoBoBoBoBoBoBoBoBeBowooSystem

Linux: Ein tiefes Eintauchen in seine grundlegenden TeileLinux: Ein tiefes Eintauchen in seine grundlegenden TeileApr 21, 2025 am 12:03 AM

Zu den Kernkomponenten von Linux gehören Kernel, Dateisystem, Shell, Benutzer- und Kernelraum, Gerätetreiber sowie Leistungsoptimierung sowie Best Practices. 1) Der Kernel ist der Kern des Systems und verwaltet Hardware, Speicher und Prozesse. 2) Das Dateisystem organisiert Daten und unterstützt mehrere Typen wie Ext4, BTRFS und XFS. 3) Shell ist das Kommandozentrum, in dem Benutzer mit dem System interagieren und das Skript unterstützt. 4) Separate Benutzerraum vom Kernelraum, um die Systemstabilität zu gewährleisten. 5) Der Gerätetreiber verbindet die Hardware mit dem Betriebssystem. 6) Die Leistungsoptimierung umfasst die Konfiguration des Tuning -Systems und die folgenden Best Practices.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft