Linux内核调试
0x00 前言
这段时间开始学习了linux内核提权,也跟进看了一些漏洞。
但是由于linux系统版本、内核版本的不同,驱动模块或者是某个函数的加载地址都是不同的,如果不能自己亲自调试内核,就算给了exp也是无法利用。
之前也没有怎么接触过内核调试,所以这几天找了许多资料开始学习调试内核的方法,总结整理在这。
本文测试系统是Ubuntu12.04 64位。
0x01 准备环境
首先当然是准备需要调试的内核版本,linux的所有历史版本都可以在这里找到。
down下来后进入源码树根目录,开始配置内核,这里使用基于ncurse库编制的图形界面工具:
$ make menuconfig
由于我们需要使用kgdb调试内核,注意下面这几项一定要配置好:
KernelHacking -->
选中Compile the kernel with debug info
选中Compile the kernel with frame pointers
选中KGDB:kernel debugging with remote gdb,其下的全部都选中。
Processor type and features-->
去掉Paravirtualized guest support
KernelHacking-->
去掉Writeprotect kernel read-only data structures(否则不能用软件断点)
保存config文件之后make、make modules_install、make install编译安装就好。
具体安装编译内核可以看我另一篇笔记
0x02 使用kvm、gdb调试内核
先介绍一下现在用得比较多的调试内核方法吧,简单地说就是在linux系统里再装一个kvm虚拟机配置好gdb远程调试支持,然后在linux主机上连接调试。
但是我因为电脑配置不高,装了kvm太卡就放弃了这个方法orz
总之还是讲一下怎么调试吧。
查看cpu是否支持,如果没有输出,要在虚拟机设置里选上Inter VT:
$ grep vmx /proc/cpuinfo
安装:
$ sudo apt-get install kvm qemu libvirt-bin virtinst virt-manager virt-viewer 需要将自己添加进kvm、libvirtd用户组:
$ sudo adduser 用户名 kvm
$ sudo adduser 用户名 libvirtd
$ groups
打开libvirt-bin服务:
$ sudo service libvirt-bin start
然后打开virt-manager开始装虚拟机:
$ gksudo virt-manager
这个图形界面的virt-manager和vmware差不多,就这样直接装虚拟机就好了。
然后添加下面配置使虚拟机支持gdb调试:
<qemu:commandline>
<qemu:arg value='-S'/>
<qemu:arg value='-gdb'/>
<qemu:arg value='tcp::1234'/>
</qemu:commandline>
将要调试的内核源码树复制进虚拟机,准备调试。
之后在主机端进入gdb调试:
$ gdb vmlinux
(gdb) target remote 127.0.0.1:1234 //连接虚拟机,这时虚拟机已经断下
(gdb) b drv_open //在驱动程序的入口函数设置断点
(gdb) c
Countinuing. //让虚拟机重新跑起来
如果要调试驱动模块的话,要在虚拟机里加载该模块:
$ insmod drv.ko
然后再回到主机开始调试。
0x03 用gdb和qemu调试内核
用qemu其实和上面kvm的差不多(qemu也已经在上面那步装好了),这里介绍一个比较快速的方法。
直接在qemu中启动已经编译好的Linux内核,不用再制作完整的启动镜像:
qemu-system-x86_64 -s -S -kernel arch/i386/boot/bzImage -hda /boot/initrd.img -append "root=/dev/hda" -gdb tcp::1234
命令中的bzImage和initrd.img就是内核源码树中对应目录下的文件。
如果不需要图形界面的话可以加上下面的参数:
-nographic
在主机用gdb调试连接:
$ gdb vmlinux
(gdb) target remote:1234
和上面的差不多可以开始调试了。
0x04 用kdb和kgdb调试内核驱动模块
接下来介绍如何用kgdb和gdb来调试内核驱动。
kgdb 是一个在 Linux 内核上提供完整的 gdb 调试器功能的补丁。
通过串口连线以钩子的形式挂入目标调试系统进行工作,然后远程运行 gdb。
使用 kgdb 时需要两个系统——一个用于运行调试器,另一个用于运行待调试的内核。
当然,用两台VM虚拟机也是可以调试内核的,渣电脑开心地都哭了(つд⊂)
首先准备两台VMware虚拟机,直接复制之前配置好的虚拟机来创建一个新的就好。
配置双机通信:
将准备好的两台虚拟机添加串行端口,如果有并行端口记得先删除。
注意箭头处的设置,一个得是客户端一个是服务端。
然后来验证一下是否成功连接。
先在客户机使用下面命令,准备接收消息:
$ cat /dev/ttyS0
然后在目标机(开启服务端的那个)输入下面命令:
$ echo edvison > /dev/ttyS0
如果没有显示就试下ttyS[0~3]
配置串口调试:
两个虚拟机都更改/etc/default/grub文件,在GRUB_CMDLINE_LINUX_DEFAULT这项后面加上kgdboc=ttyS1,115200,如果不需要图形界面启动的话可以加上text(最好目标机使用这个):
然后update-grub一下,重启系统。
进入grub界面,选择要调试的内核版本。
(没有进grub的话去把gurb文件里GRUB_HIDDEN_TIMEOUT这行注释掉)
出现下面的信息就说明配置成功了。
开始调试:
打开目标机,可以看到已经显示命令行界面了(之前配置里加了text)
编译、载入要调试的驱动(这里使用内核ROP的那个栗子,源码在这里可以找到。
打开客户机,使用gdb准备开始连接调试:
编译加载好驱动后,在目标机里查看我们调试的驱动的加载基址,由于我们的驱动程序能直接打印基址,所以用dmesg 命令查看就好:
另外还可以用下面的命令查看模块基址:
cat /proc/modules | grep drv
然后在目标机下输入下面的命令,使目标机进入被调试的假死状态:
# echo g > /proc/sysrq-trigger
接下来就可以在客户机里连接上目标机了:
之后在客户机里加载符号文件,并给驱动的入口函数device_ioctl()和device_open()设置断点:输入c让目标机继续运行。
然后我们在目标机调试trigger程序,来调用内核模块的device_ioctl函数。
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "drv.h"
#define DEVICE_PATH "/dev/vulndrv"
int main(int argc, char **argv) {
int fd;
struct drv_req req;
req.offset = atoll(argv[1]);
//map = mmap((void *)..., ..., 3, 0x32, 0, 0);
fd = open(DEVICE_PATH, O_RDONLY);
if (fd == -1) {
perror("open");
}
ioctl(fd, 0, &req);
return 0;
}
在open函数和ioctl下下断:
调试到这里后断下(直接运行./trigger [offset]也能在客户机里断下),可以看到客户机已经进入了驱动程序的调试模式,接下来就可以随意进行调试了;)
0x05 参考链接
/gdb-kgdb-debug-application/
https://qemu.weilnetz.de/doc/qemu-doc.html#direct_005flinux_005fboot
https:///developerworks/cn/linux/1508_zhangdw_gdb/index.html。
Linux操作系统内核性能测试与调优
Linux操作系统内核性能测试与调优操作系统是计算机系统中最核心的软件之一,它负责协调和管理计算机硬件资源以及提供统一的用户界面。
Linux操作系统因其开放源代码、稳定性和安全性而备受欢迎。
然而,在大规模和高负载的环境中,Linux操作系统的性能可能会出现瓶颈。
因此,进行内核性能测试与调优是非常重要的。
一、性能测试的重要性在处理大量数据和并发用户请求时,操作系统的性能会成为瓶颈。
通过性能测试,我们可以了解操作系统在不同负载情况下的表现,进而定位和解决性能瓶颈。
性能测试有助于提高系统的响应时间、吞吐量和并发性能,从而确保系统的稳定运行。
二、性能测试的分类1. 压力测试:通过模拟实际用户行为或产生大量虚拟用户,并观察系统在负载增加的情况下的响应时间和吞吐量。
常用的压力测试工具包括Apache JMeter和Gatling等。
2. 负载测试:通过模拟实际业务场景,并且能够测试系统在高负载情况下的响应能力和稳定性。
这种测试方法可以帮助我们发现系统在繁忙时是否仍然能够正常工作,并识别可能存在的性能瓶颈。
3. 并发测试:通过模拟多个并发用户并行执行相同或不同的操作,以验证系统在并发访问下的性能表现。
这种测试方法可以评估系统的并发处理能力和资源利用率。
三、内核性能调优的重要性Linux操作系统的性能与其内核配置息息相关。
对内核的性能调优可以提高系统的响应速度、降低延迟和提高吞吐量。
通过调整内核参数和优化内核模块,可以使操作系统更好地适应特定的工作负载。
四、内核性能调优的方法1. 内核参数调整:根据系统的工作负载特点,适当调整内核参数。
例如,可以通过修改TCP/IP堆栈参数来提高网络性能,或者通过修改文件系统参数来提高磁盘I/O性能。
2. 内核模块优化:优化内核使用的模块,选择性加载和卸载不必要的模块,以减少内核的资源占用和启动时间。
3. 中断处理优化:通过合理分配和调整中断处理的优先级,减少中断处理的开销,提高系统的性能。
Linux内核调试方法总结之反汇编
Linux内核调试⽅法总结之反汇编Linux反汇编调试⽅法Linux内核模块或者应⽤程序经常因为各种各样的原因⽽崩溃,⼀般情况下都会打印函数调⽤栈信息,那么,这种情况下,我们怎么去定位问题呢?本⽂档介绍了⼀种反汇编的⽅法辅助定位此类问题。
代码⽰例如下:#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <execinfo.h>#include <fcntl.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#define PRINT_DEBUG#define MAX_BACKTRACE_LEVEL 10#define BACKTRACE_LOG_NAME "backtrace.log"static void show_reason(int sig, siginfo_t *info, void *secret){void *array[MAX_BACKTRACE_LEVEL];size_t size;#ifdef PRINT_DEBUGchar **strings;size_t i;size = backtrace(array, MAX_BACKTRACE_LEVEL);strings = backtrace_symbols(array, size);printf("Obtain %zd stack frames.\n", size);for(i = 0; i < size; i++)printf("%s\n", strings[i]);free(strings);#elseint fd = open(BACKSTRACE_LOG_NAME, O_CREAT | O_WRONLY);size = backtrace(array, MAX_BACKTRACE_LEVEL);backtrace_symbols_fd(array, size, fd);close(fd);#endifexit(0);}void die() {char *str1;char *str2;char *str3;char *str4 = NULL;strcpy(str4, "ab");}void let_it_die() {die();}int main(int argc, char **argv){struct sigaction act;act.sa_sigaction = show_reason;sigemptyset(&act.sa_mask);act.sa_flags = SA_RESTART | SA_SIGINFO;sigaction(SIGSEGV, &act, NULL);sigaction(SIGUSR1, &act, NULL);sigaction(SIGFPE, &act, NULL);sigaction(SIGILL, &act, NULL);sigaction(SIGBUS, &act, NULL);sigaction(SIGABRT, &act, NULL);sigaction(SIGSYS, &act, NULL);let_it_die();return 0;}在该⽰例中,我们通过⾃定义的信号处理函数,在程序异常时通过调⽤backtrace()和backtrace_symbols()函数获取并打印函数调⽤栈信息。
Linux调试工具
Linux调试⼯具1. 使⽤printf调试#ifdef DEBUGPrintf(“valriable x has value = %d\n”, x)#endif然后在编译选项中加⼊-DDEBUG更复杂的调试应⽤如:#define BASIC_DEBUG 1#define EXTRA_DEBUG 2#define SUPER_DEBUG 4#if (DEBUG &EXTRA_DEBUG)printf …#endif在这种情况下如果设置编译器标志为-DDEBUG=5,将启⽤BASIC_DEBUG和SUPER_DEBUG。
标志-DDEBUG=0将禁⽤所有的调试信息,也可以在程序中添加如下语句:#ifndef DEBUG#define DEBUG 0#endif2.使⽤gdb调试Gcc编译的时候要加上-g选项,让编译器在程序中添加额外的调试信息。
如果正式发布,这些调试信息可以使⽤strip命令删除。
Gdb:Backtrace栈跟踪3. 程序静态分析⼯具splintsplint功能:常识性测试并产⽣⼀些警告信息。
它可以检测未经赋值的变量使⽤,函数的参数未使⽤等异常情况。
4. 程序执⾏性能分析⼯具prof/gprof显⽰执⾏所花费的时间具体都⽤在什么操作上。
5. 内存调试ElectricFence函数库和valgrind可以⽤来检查动态内存分配的⼀些问题,包括内存泄漏。
Linux下的调试⼯具随着XP的流⾏,⼈们越来越注重软件的前期设计、后期的实现,以及贯穿于其中的测试⼯作,经过这个过程出来的⾃然是⾼质量的软件。
甚⾄有⼈声称XP会淘汰调试器!这当然是有⼀定道理的,然⽽就⽬前的现实来看,这还是⼀种理想。
在⽇常⼯作中,调试⼯具还是必不可少的。
在Linux下,调试⼯具并⾮只有gdb,还有很多其它调试⼯具,它们都各有所长,侧重⽅⾯也有所不同。
本⽂介绍⼏种笔者常⽤的调试⼯具:1. mtrace在linux下开发应⽤程序,⽤C/C++语⾔的居多。
Linux2.6下内核调试技术的改进与研究
安 装 自己的新 内核 . 是 为 了在 内核 代 码 中加 入 以 这
收 稿 日期: 0 5 0 — 9 20— 80 基 金 项 目: 安 部 金 盾 工 程 资 助 项 目 (1 A 2W0 3 公 JG B 3 1 )
Ab ta t Ac o dn h iu d l c a im n e ied e ’ lme t. hsp p ra ay e e k re e sr c : cr igt te Ln xmo ue me h ns a dd vc dv rsee ns ti a e lBst e l - o n h n d b gp be i ed vc r e ’ e eo me tpo e s n d rsac e e k r e e u c n lg o gd , a - u r lm n t e ied v rsd v lp n rc s,a ee rh st en l b gt h oo yt mu lyme o h i h d e h n w i ,rp ssa mp o e ou o b u mo alc t nma a e n d ac s ntek r e. hl p o oe i rv dslt n a o t e n i me w l ai , n g me ta ce si e 1 o o n h n Ke r s Ln x26 De u e h oo y K o d ywo d : iu ., b g tc n lg , ig
YANG o Ma ,DAIZib n - i
( stt o lc o i T cn lg,h L fr ai n ier g nvri , hnzo 5 0 4C ia I tue f et nc eh o y teP AI om t nE g ei i sy Z e ghu4 0 0 hn ) ni E r o n o n nU e t
内核卡死调试方法-概述说明以及解释
内核卡死调试方法-概述说明以及解释1.引言1.1 概述内核卡死是指操作系统的内核无法继续执行下去,在特定的情景下,系统停止响应并无法正常运行。
这可能会导致系统崩溃、程序无法执行或者无法正常操作。
内核卡死调试方法是帮助我们解决这类问题的一种重要工具。
在本文中,我们将讨论内核卡死调试的方法和技巧,帮助读者更好地定位和解决内核卡死的问题。
首先,我们将介绍内核卡死的原因,包括硬件故障、软件错误和不兼容性等。
然后,我们将探讨内核卡死的常见表现,例如系统停止响应、屏幕冻结和错误信息等。
接着,我们将强调内核卡死调试的重要性。
内核卡死不仅会影响系统的稳定性和性能,还可能导致数据丢失和未完成的任务。
因此,在及时发现和解决内核卡死问题的同时,可以提高系统的可靠性和用户的体验。
最后,我们将总结内核卡死调试的方法和技巧。
这些方法包括使用系统日志和调试工具来分析和追踪系统状态,以及查找和修复可能的错误。
我们还将介绍一些常用的内核卡死调试工具和技术,如调试模式和堆栈跟踪。
通过本文的阅读,读者将能够更好地理解内核卡死调试的重要性和方法,使其能够快速解决内核卡死的问题,并提高系统的稳定性和可靠性。
1.2 文章结构文章结构是指对文章主要内容进行整体的组织和安排,以便读者能够清晰地了解文章的层次结构和脉络。
在讲述内核卡死调试方法的长文中,文章结构应该包括以下几个主要部分:1. 引言:在引言部分,我们将对内核卡死调试方法的重要性和必要性进行概述。
解释为什么需要调试内核卡死问题,以及通过本文能够掌握哪些相关的调试方法。
2. 内核卡死的原因:该部分将详细介绍导致内核卡死的各种原因,如硬件故障、软件错误、驱动冲突等。
通过对这些原因的分析,读者能够更好地理解内核卡死的根本问题。
3. 内核卡死的常见表现:在这一部分,我们将列举内核卡死的一些常见表现,如系统崩溃、黑屏、任务无响应等。
通过对这些表现的描述,读者能够判断出系统是否卡死,并能更好地定位具体问题。
使用 ftrace 调试 Linux 内核,第 2 部分
使用ftrace 调试Linux 内核,第 2 部分ftrace 操作概述使用ftrace 提供的跟踪器来调试或者分析内核时需要如下操作:切换到目录/sys/kernel/debug/tracing/ 下查看available_tracers 文件,获取当前内核支持的跟踪器列表关闭ftrace 跟踪,即将0 写入文件tracing_enabled激活ftrace_enabled ,否则function 跟踪器的行为类似于nop;另外,激活该选项还可以让一些跟踪器比如irqsoff 获取更丰富的信息。
建议使用ftrace 时将其激活。
要激活ftrace_enabled ,可以通过proc 文件系统接口来设置:echo 1 > /proc/sys/kernel/ftrace_enabled将所选择的跟踪器的名字写入文件current_tracer将要跟踪的函数写入文件set_ftrace_filter ,将不希望跟踪的函数写入文件set_ftrace_notrace。
通常直接操作文件set_ftrace_filter 就可以了激活ftrace 跟踪,即将 1 写入文件tracing_enabled。
还要确保文件tracing_on 的值也为1,该文件可以控制跟踪的暂停如果是对应用程序进行分析的话,启动应用程序的执行,ftrace 会跟踪应用程序运行期间内核的运作情况通过将0 写入文件tracing_on 来暂停跟踪信息的记录,此时跟踪器还在跟踪内核的运行,只是不再向文件trace 中写入跟踪信息;或者将0 写入文件tracing_enabled 来关闭跟踪查看文件trace 获取跟踪信息,对内核的运行进行分析调试接下来将对跟踪器的使用以及跟踪信息的格式通过实例加以讲解。
回页首fucntion 跟踪器function 跟踪器可以跟踪内核函数的调用情况,可用于调试或者分析bug ,还可用于了解和观察Linux 内核的执行过程。
petalinux(二)开启petalinux内核调试模式
petalinux(二)开启petalinux内核调试模式描述要调试基于Xilinx SDK的Linux内核模块,必须使能KERNEL_DEBUG_INFO和KERNEL_DEBUGGING。
这篇博文全面记录了在Petalinux中是如何处理的。
解决方案获得基于调试模式的petalinux,需要一些特定的配置设定,有一些特定的配置需要设置为了获取PetaLinux基于内核调试工作。
完整的配置步骤请参考帮助文件:SDK Help Xilinx Software Development Kit (SDK) User Guide Working with Xilinx System Debugger System Debugger Supported Design Flows Attach and Debug using Xilinx System Debugger.下面是配置基于PetaLinux的Linux内核调试模式所涉及到的步骤:1)创建一个Zynq Vivado和导出模板项目硬件SDK。
2)创建一个Linux应用程序在SDK Hello World示例并关闭SDK项目,继续Petalinux项目下一步。
3)与下面的命令创建一个petalinux项目:petalinux-create --type project --template --name4)到petalinux项目目录下,并运行以下命令:petalinux-config --get-hw-descripTIon=指定hw-descripTIon的目录,目录中包含hdf文件( project_name 的。
sdk目录在您之前创建Vivado项目)。
5)如图2所示,到达Linux Components SelecTIon --- and then to kernel (xlnx-4.0)项,选择remote 选项:6)接下来我们需要指定完整的内核源代码的路径,该路径可以Xilinx GitHub页面找到。
Linux操作系统修改内核参数的三种方法详细说明
Linux操作系统修改内核参数的三种方法详细说明linux内核的参数设置怎么弄呢,Linux 操作系统修改内核参数有以下三种方式:修改 /etc/sysctl.conf 文件;在文件中加入配置项,格式为 key = value,保存修改后的文件,执行命令 sysctl -p 加载新配置。
使用 sysctl 命令临时修改;如:sysctl -w net.ipv4.tcp_mem = “379008 505344 758016”直接修改/proc/sys/ 目录中的文件。
如:echo “379008 505344 758016” 》 /proc/sys/net/ipv4/tcp_mem 注意:第一种方式在重启操作系统后自动永久生效;第二种和第三种方式在重启后失效。
内核参数kernel.core_uses_pi d = 1core_uses_pid 可以控制 core 文件的文件名中是否添加 pid 作为扩展名。
设置为1,表示添加 pid 作为扩展名,生成的 core 文件格式为core.xxx;设置为0(默认),表示生成的 core 文件统一命名为 core。
kernel.core_pat te rn = corecore_pattern 可以控制 core 文件的保存位置和文件格式。
如:kernel.core_pattern = “/corefile/core-%e-%p-%t”,表示将core 文件统一生成到 /corefile 目录下,产生的文件名为 core-命令名-pid-时间戳。
以下是参数列表:%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 ti me that the coredump occurred into filename 添加 core 文件生成时的 unix 时间%h - insert hostname where the coredump happened into filename 添加主机名%e - insert coredumping executable name into filename 添加命令名kernel.msgmax = 8192进程间的消息传递是在内核的内存中进行的。
Linux内核调试工具Kprobe机制的研究
Linux内核调试工具Kprobe机制的研究李清干* 邵作之(华北电力大学计算机科学与技术学院,北京 102206)摘 要:在传统内核调试过程中,我们经常使用print k作为内核调试的一种方法,但这种方法执行速度相对较慢,在对响应时间要求比较严格的内核控制路径(如中断)中不宜采用它。
Kprobe(K erne l probe)与2 6内核结合起来提供了一个动态插入pri n t k的轻量级、无干扰而且强大的装置,使用K probe不需要经常重新引导和重新编译内核就可以完成这一任务。
本文重点介绍K probe调试机制原理以及同内核接口。
关键词:L inux内核;K probe;探测点一、Kp robe机制简介K probe是IB M公司开发的一个轻量级调试工具,它允许内核运行时通过加载模块设置探测器,内核运行到探测点时便执行其相应的处理函数,这是以前的所有工具都做不到的。
K probe作为一个动态地收集调试和性能信息的工具,它从Dprobe项目派生而来,是一种非破坏性工具,用户用它几乎可以跟踪任何函数或被执行的指令以及一些异步事件(如ti m er)。
它的基本工作机制是:用户指定一个探测点,并把一个用户定义的处理函数关联到该探测点,当内核执行到该探测点时,相应的关联函数被执行,然后继续执行正常的代码路径。
使用K probe可以轻松地通过收集处理器寄存器和全局数据结构等调试信息。
开发者甚至可以使用K probe来修改寄存器值和全局数据结构的值。
K probe实现了三种类型的探测点:kprobes、j probes和kretprobes(也叫返回探测点)。
kprobes是可以被插入到内核的任何指令位置的探测点,j probes则只能被插入到一个内核函数的入口,而kre t probes则是在指定的内核函数返回时才被执行。
这三种类型可以用在不同情况的上下文中。
二、Kp robe机制实现原理当安装一个kprobes探测点时,K probe首先备份被探测的指令,然后使用断点指令(即在i386和x86_64的i nt3指令)来取代被探测指令的头一个或几个字节。
linux下core 文件的调试方法
1)gdb -core=core.xxxx
file ./a.out
bt
2)gdb -c core.xxxx
file ./a.out
bt
4.开发板上使用core文件调试
-----------------------------
1.core文件的生成开关和大小限制
---------------------------------
1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。
2)使用ulimit -cfilesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -cunlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文件的时候,gdb会提示错误。
可通过以下命令修改此文件:
echo "1" > /proc/sys/kernel/core_uses_pid
2)proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
可通过以下命令修改此文件:
echo "/corefile/core-%e-%p-%t" > core_pattern,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
2.core文件的名称和生成路径
----------------------------
