Apakah teras di bawah linux

藏色散人
藏色散人asal
2023-03-23 10:00:502802semak imbas

Di bawah Linux, teras ialah imej memori dengan maklumat penyahpepijatan ditambah Apabila program keluar atau ditamatkan secara tidak normal di bawah Linux, kami akan menggunakan fail teras untuk analisis, yang mengandungi memori dan mendaftar apabila atur cara berjalan. , penuding tindanan dan maklumat lain, formatnya ialah ELF, yang boleh difahami sebagai membuang status semasa program ke dalam fail.

Apakah teras di bawah linux

Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.

Apakah teras di bawah linux?

Penjelasan terperinci tentang cara menggunakan fail teras di bawah Linux

Kadangkala program akan keluar secara tidak normal tanpa sebarang log Pada masa ini, anda boleh menggunakan fail kod untuk analisis, yang akan merekodkan operasi atur cara, daftar, penuding tindanan dan maklumat lain

fail teras:

Biasanya apabila program keluar atau ditamatkan secara tidak normal di bawah Linux, kami akan menggunakan fail teras untuk analisis, yang mana mengandungi masa jalan program Memori, daftar, penuding tindanan dan maklumat lain adalah dalam format ELF Ia boleh difahami bahawa status semasa program dibuang ke dalam fail Dengan menganalisis fail ini dengan alat, kita boleh mencari yang sepadan stack call dan maklumat lain apabila program keluar secara tidak normal atau ditamatkan.

Gunakan penyahpepijatan fail teras

Kaedah penjanaan

Lihat status fail teras semasa

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

Hidupkan suis penjanaan

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

Hadkan saiz fail teras dalam blok, biasanya 1 blok=512 bait Jika tetapan terlalu kecil, fail mungkin tidak dijana

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

Matikan suis penjanaan

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

Operasi di atas pada fail teras hanya berkuat kuasa pada masa ini Jika ia perlu berkuat kuasa secara kekal, operasi yang sepadan mesti ditulis ke /etc/. profil

Laluan Penjanaan

Fail teras dijana dalam direktori kerja program secara lalai Anda boleh menetapkan laluan penjanaan perlu memastikan bahawa direktori yang sepadan mempunyai ruang yang mencukupi dan mempunyai kebenaran menulis

echo /MyCoreDumpDir/core.%e.%p > /proc/sys/kernel/core_pattern

Senarai parameter yang digunakan dalam penamaan

%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 # 添加命令名

/proc/sys/kernel/core_uses_pid Jika nilai fail ini ialah 1, maka apabila %p dikonfigurasikan, fail teras yang dijana akhirnya akan menambah pid

Kaedah penyahpepijatan

Anda boleh menggunakan gdb untuk nyahpepijat fail teras. Semasa menyusun, anda perlu membawa pilihan -g

$ gdb a.out
...
(gdb) core-file core
...
(gdb) bt 
...

Jika perlu, jalankan pada PC Untuk menyahpepijat fail teras yang dijana oleh peranti terbenam, anda perlu memilih alat gdb bagi platform yang sepadan dan tetapkan lokasi daripada fail simbol selepas memasukkan gdb

$ xxx-xxx-gdb a.out
...
(gdb) solib-search-path xxx.so:xxx.so
...
(gdb) core-file core
...
(gdb) bt
...

Cadangan berkaitan: "Tutorial Video Linux

Atas ialah kandungan terperinci Apakah teras di bawah linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah fungsi linux arpArtikel seterusnya:Apakah fungsi linux arp