Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apakah teras di bawah linux
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.
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!