Dalam Linux, Teras bermaksud ingatan. Apabila pengecualian dikesan semasa program sedang berjalan dan program keluar secara tidak normal, sistem menyimpan status memori semasa program dalam fail teras, dipanggil teras dibuang, yang juga merupakan lambakan maklumat apabila sistem pengendalian mengesan pengecualian dalam proses semasa, ia akan menggunakan isyarat memberitahu proses sasaran tentang maklumat ralat yang sepadan termasuk SIGSEGV, SIGBUS, dll. Secara lalai, proses mempunyai mekanisme pemprosesan yang sepadan apabila ia menerima isyarat yang sepadan.
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
Apabila membangun di bawah Linux, kita sering mendengar pengaturcara mengatakan bahawa teras program saya telah jatuh Masalah seperti itu biasanya berlaku disebabkan oleh pepijat peringkat rendah seperti akses memori di luar sempadan, penggunaan penunjuk nol, limpahan timbunan. , dsb. Jika program keluar atau ditamatkan secara tidak normal semasa berjalan, fail teras akan dijana apabila syarat ini dipenuhi.
Mengapa Coredump berlaku
Teras bermaksud ingatan Perkataan ini berasal daripada bahan yang digunakan untuk membuat ingatan sejak dahulu lagi dan telah digunakan sehingga Kini, apabila pengecualian dikesan semasa program sedang berjalan dan program keluar secara tidak normal, sistem menyimpan status memori semasa program dalam fail teras, dipanggil teras dibuang, iaitu, pembuangan maklumat sistem pengendalian mengesan arus Apabila proses tidak normal, proses sasaran akan dimaklumkan tentang maklumat ralat yang sepadan melalui isyarat Isyarat biasa termasuk SIGSEGV, SIGBUS, dll. Secara lalai, proses akan mempunyai mekanisme pemprosesan yang sepadan untuk menerima isyarat yang sepadan.
Mengambil Linux sebagai contoh, Tindakan sepadan dengan kaedah pemprosesan isyarat Kotak merah ditandakan dengan isyarat biasa
Sebaik-baiknya. memahaminya sebelum melakukan ini Seterusnya, susun atur memori proses Susun atur ruang proses sistem Unix dan Linux akan menjadi lebih kecil daripada Linux, terutamanya proses kernel dan pengguna menggunakan mod ruang alamat yang berasingan ialah Linux sebagai contoh:
Lokasi storan fail coredump
Kita tahu bahawa dalam sistem Linux , jika proses ranap, kernel sistem akan menangkap maklumat ranap proses , dan kemudian menulis maklumat coredump proses ke fail Nama fail lalai kepada teras. Lokasi storan berada dalam direktori yang sama dengan program boleh laku yang sepadan Nama fail adalah teras Anda boleh melihat lokasi fail teras melalui arahan berikut:

Format Core_pattern:
%p PID proses dump
%u (nombor) UID sebenar proses dump
%G (nombor) dump The GID sebenar proses
%s Bilangan isyarat yang menyebabkan pembuangan
%t Masa pembuangan, dinyatakan sebagai bilangan saat sejak 1 Januari 1970 00:00:00 +0000 (UTC)
%H Nama hos (sama seperti nama nod yang dikembalikan oleh uname(2))
%e Nama fail boleh laku (tiada awalan laluan)
%E Nama laluan fail boleh laku, dengan slash ('/') Digantikan dengan tanda seru ('!').
%C Had sumber lembut saiz fail teras untuk proses ranap (sejak Linux 2.6.24)
Atur cara berikut boleh digunakan untuk menunjukkan sintaks paip dalam /proc/sys/kernel/ penggunaan fail core_pattern.
#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
查看路径已经变为如下:

下面带大家配置永久的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
执行命令生效该文件

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
编译运行,注意这里需要-g选项编译。

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

出现core文件表示完成coredump配置。可以用通过readelf命令进行判断是否是core文件:
Jalankan gdb untuk membaca fail teras Perintahnya ialah "program gdb sepadan dengan fail coredump Pada masa ini, anda akan memasukkan gesaan gdb "(gdb)".
Seperti yang anda boleh lihat daripada tangkapan skrin kotak merah, program ditamatkan kerana isyarat 11.
Anda boleh melihat timbunan panggilan fungsi melalui perintah bt (jejak belakang) (atau di mana):

Iaitu, segfault berlaku apabila program dilaksanakan ke baris 6 test.cpp. Sebabnya ialah ia menunjuk kepada penunjuk nol.
Ringkasan
Terdapat banyak sebab untuk coredump program Berikut ialah ringkasan, terutamanya akses memori di luar had, penggunaan thread-unsafe fungsi, Menggunakan penunjuk nol, limpahan tindanan, dsb.
Saya ingin katakan di sini bahawa apabila menyahpepijat coredump dengan gdb, kebanyakan masa anda hanya boleh mengetahui sebab intuitif untuk teras daripada fail teras, tetapi sebab yang lebih asas biasanya perlu digabungkan dengan kod untuk menganalisis perjalanan proses pada masa itu Hanya melalui senario kontekstual kita boleh membuat kesimpulan di mana masalah terletak pada kod program.
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Apakah maksud teras linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Mod penyelenggaraan Linux boleh dimasukkan melalui menu grub. Langkah -langkah tertentu ialah: 1) Pilih kernel dalam menu grub dan tekan 'E' untuk mengedit, 2) Tambah 'Single' atau '1' pada akhir garis 'Linux', 3) Tekan Ctrl X untuk memulakan. Mod penyelenggaraan menyediakan persekitaran yang selamat untuk tugas seperti pembaikan sistem, penetapan semula kata laluan dan peningkatan sistem.

Langkah -langkah untuk memasukkan mod pemulihan Linux adalah: 1. Mulakan semula sistem dan tekan kekunci khusus untuk memasukkan menu Grub; 2. Pilih pilihan dengan (pemulihanMode); 3. Pilih operasi dalam menu Mod Pemulihan, seperti FSCK atau Root. Mod pemulihan membolehkan anda memulakan sistem dalam mod pengguna tunggal, melakukan pemeriksaan sistem fail dan pembaikan, mengedit fail konfigurasi, dan operasi lain untuk membantu menyelesaikan masalah sistem.

Komponen teras Linux termasuk kernel, sistem fail, shell dan alat biasa. 1. Kernel menguruskan sumber perkakasan dan menyediakan perkhidmatan asas. 2. Sistem fail menganjurkan dan menyimpan data. 3. Shell adalah antara muka bagi pengguna untuk berinteraksi dengan sistem. 4. Alat umum membantu menyelesaikan tugas harian.

Struktur asas Linux termasuk kernel, sistem fail, dan shell. 1) Sumber perkakasan pengurusan kernel dan gunakan UNAME-R untuk melihat versi. 2) Sistem fail ext4 menyokong fail dan log besar dan dibuat menggunakan mkfs.ext4. 3) Shell menyediakan interaksi baris arahan seperti BASH, dan menyenaraikan fail menggunakan LS-L.

Langkah -langkah utama pengurusan dan penyelenggaraan sistem Linux termasuk: 1) menguasai pengetahuan asas, seperti struktur sistem fail dan pengurusan pengguna; 2) Menjalankan pemantauan sistem dan pengurusan sumber, gunakan alat atas, HTOP dan lain -lain; 3) Gunakan log sistem untuk menyelesaikan masalah, gunakan JournalCTL dan alat lain; 4) Tulis skrip automatik dan penjadualan tugas, gunakan alat Cron; 5) Melaksanakan pengurusan dan perlindungan keselamatan, konfigurasikan firewall melalui iptables; 6) Menjalankan pengoptimuman prestasi dan amalan terbaik, menyesuaikan parameter kernel dan mengembangkan tabiat yang baik.

Mod penyelenggaraan Linux dimasukkan dengan menambah init =/bin/bash atau parameter tunggal pada permulaan. 1. Masukkan Mod Penyelenggaraan: Edit menu Grub dan tambahkan parameter permulaan. 2. Mengembalikan sistem fail untuk membaca dan menulis mod: mount-oremount, rw/. 3. Membaiki sistem fail: Gunakan arahan FSCK, seperti FSCK/DEV/SDA1. 4. Menyokong data dan beroperasi dengan berhati -hati untuk mengelakkan kehilangan data.

Artikel ini membincangkan cara meningkatkan kecekapan pemprosesan data Hadoop pada sistem Debian. Strategi pengoptimuman meliputi peningkatan perkakasan, pelarasan parameter sistem operasi, pengubahsuaian konfigurasi Hadoop, dan penggunaan algoritma dan alat yang cekap. 1. Pengukuhan sumber perkakasan memastikan bahawa semua nod mempunyai konfigurasi perkakasan yang konsisten, terutama memberi perhatian kepada prestasi CPU, memori dan peralatan rangkaian. Memilih komponen perkakasan berprestasi tinggi adalah penting untuk meningkatkan kelajuan pemprosesan keseluruhan. 2. Sistem operasi Tunes deskriptor fail dan sambungan rangkaian: Ubah suai fail /etc/security/limits.conf untuk meningkatkan had atas deskriptor fail dan sambungan rangkaian yang dibenarkan dibuka pada masa yang sama oleh sistem. Pelarasan Parameter JVM: Laraskan fail Hadoop-env.sh

Panduan ini akan membimbing anda untuk belajar cara menggunakan syslog dalam sistem Debian. SYSLOG adalah perkhidmatan utama dalam sistem Linux untuk sistem pembalakan dan mesej log aplikasi. Ia membantu pentadbir memantau dan menganalisis aktiviti sistem untuk mengenal pasti dan menyelesaikan masalah dengan cepat. 1. Pengetahuan asas syslog Fungsi teras syslog termasuk: mengumpul dan menguruskan mesej log secara terpusat; menyokong pelbagai format output log dan lokasi sasaran (seperti fail atau rangkaian); Menyediakan fungsi tontonan log dan penapisan masa nyata. 2. Pasang dan konfigurasikan syslog (menggunakan rsyslog) Sistem Debian menggunakan rsyslog secara lalai. Anda boleh memasangnya dengan arahan berikut: sudoaptupdatesud


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft