Apakah teras di bawah linux

藏色散人
Lepaskan: 2023-03-23 10:00:50
asal
2811 orang telah melayarinya

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 # 关闭状态
...
Salin selepas log masuk

Hidupkan suis penjanaan

ulimit -c unlimited
ulimit -a
...
-c: core file size (blocks)   unlimited
...
Salin selepas log masuk

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
...
Salin selepas log masuk

Matikan suis penjanaan

ulimit -c 0
ulimit -a
...
-c: core file size (blocks)   0
...
Salin selepas log masuk

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
Salin selepas log masuk

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 # 添加命令名
Salin selepas log masuk

/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 
...
Salin selepas log masuk

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
...
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan