段错误 https://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html
https://blog.csdn.net/u011417820/article/details/71435031
core文件 查看core文件大小:ulimit -a 或者 ulimit -c。
core file size
unlimited: core 文件的大小不受限制
0: 程序出错时不会产生core文件
1024: 代表1024k,core文件超过该大小就不能生成了 2. 设置core文件大小:ulimit -c filesize 3. 程序奔溃的时候生成的core文件大小即为程序运行时占用的内存大小,如果发生堆栈溢出,则会占用更大的内存
设置core文件的名称和文件路径 默认生成路径:在可执行文件运行命令的同一路径下
默认生成名字:默认名字为core,新的core文件会覆盖旧的core文件
设置pid作为文件扩展名
echo “1” > /proc/sys/kernel/core_uses_pid
或者 sysctl -w kernel.core_uses_pid=1 kernel.core_uses_pid=1
其中:0代表不使用pid作为扩展名,1代表使用 2. 控制core文件保存位置和文件名格式
修改文件命名:echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
或者:sysctl -w kernel.core_pattern=/corefile/core.%e.%p.%s.%E
上面命令将core文件统一生成到 /corefile 目录下。
1 2 3 4 5 6 7 8 参数列表 %p - insert pid into filename 添加pid(进程id) %u - insert current uid into filename 添加当前uid(用户id) %g - insert current gid into filename 添加当前gid(用户组id) %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 添加导致产生core的命令名
linux下 c/c++ 编程最常见的就是错误就是段错误了,本文来分析一下段错误为什么产生?产生的原因以及如何处理。
1. 段错误介绍 1 2 3 4 5 A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors. Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy. On Unix-like operating systems, a process that accesses invalid memory receives the SIGSEGV signal. On Microsoft Windows, a process that accesses invalid memory receives the STATUS_ACCESS_VIOLATION exception.
分段错误(通常简称段错误)是计算机软件运行过程中可能出现的一种特殊的错误情况。简而言之,出现段错误当一个程序试图访问不允许访问的内存位置,或试图访问一个内存位置的方式是不允许的(例如,试图写一个只读的位置,或覆盖操作系统的一部分)。基于像摩托罗拉68000处理器的系统往往将这些事件称为地址或总线错误。
分段是操作系统中内存管理和保护的一种方法。在大多数情况下,它已经被分页所取代,但是分段的许多术语仍然被使用,“分段故障”就是一个例子。尽管分页被用作主要的内存管理策略,但一些操作系统在某些逻辑级别上仍然有分段。
在类unix操作系统上,访问无效内存的进程接收SIGSEGV信号。在Microsoft Windows上,访问无效内存的进程会收到status_access_违例异常。
2. 为什么产生段错误 2.1 访问不存在的内存地址 1 2 int* ptr = NULL; *ptr = 1;
2.2 访问不允许访问的地址 1 2 int* ptr = (int*)0; *ptr = 1;
2.3 写只读的内存地址 1 2 char* ptr = "test"; strcpy(ptr,"TEST");
2.4 栈溢出 一般多出现于递归函数,或使用栈空间过量。
还有很多其他原因
3. 查看段错误信息 3.1 dmesg 这个命令用来检查和控制内核的环形缓冲区,其实就是在检查 /var/log/demsg 日志。默认操作就是显示所有来自于内核缓冲区空间的消息。而段错误来自于内核的报错,因此也会写入到这个日志中。
1 2 3 4 执行 demsg 之后 结果: [7612059.013222] test[10997]: segfault at 4005a0 ip 00000000004004fd sp 00007ffdc00a0370 error 7 in test[400000+1000] [7612082.776055] test[11162]: segfault at 4005a0 ip 00000000004004fd sp 00007fffbe060180 error 7 in test[400000+1000]
可以看到断错误发生的二进制文件名称、引起段错误发生的内存地址、指令指针地址、堆栈指针地址、错误代码、错误原因等等信息。
3.2 分析产生的 core 文件 使用 gcc/g++ 在编译的时候加上 -g 选项,使生成的二进制文件中加入可以用于 gdb 调试的信息。
linux 生成 core 文件,需要打开生成 core 文件的选项
3.2.1 查看core文件大小:ulimit -a 或者 ulimit -c。
core file size
unlimited: core 文件的大小不受限制
0: 程序出错时不会产生core文件
1024: 代表1024k,core文件超过该大小就不能生成了
设置core文件大小:ulimit -c filesize
程序奔溃的时候生成的core文件大小即为程序运行时占用的内存大小,如果发生堆栈溢出,则会占用更大的内存
3.2.2 设置core文件的名称和文件路径 默认生成路径:在可执行文件运行命令的同一路径下
默认生成名字:默认名字为core,新的core文件会覆盖旧的core文件
设置pid作为文件扩展名
echo “1” > /proc/sys/kernel/core_uses_pid
或者 sysctl -w kernel.core_uses_pid=1 kernel.core_uses_pid=1
其中:0代表不使用pid作为扩展名,1代表使用
控制core文件保存位置和文件名格式
修改文件命名:echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
或者:sysctl -w kernel.core_pattern=/corefile/core.%e.%p.%s.%E
上面命令将core文件统一生成到 /corefile 目录下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 参数列表 %p - insert pid into filename 添加pid(进程id) %u - insert current uid into filename 添加当前uid(用户id) %g - insert current gid into filename 添加当前gid(用户组id) %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 添加导致产生core的命令名
接下里可以使用 gdb 来调试生成的 core 文件。
3.3 使用 objdump 查看汇编代码 3.3.1 使用dmesg 命令,找到发生段错误的地址 1 [7612082.776055] test[11162]: segfault at 4005a0 ip 00000000004004fd sp 00007fffbe060180 error 7 in test[400000+1000]
可知发生段错误的地址:4005a0,相对于的指令指针地址:00000000004004fd。
3.3.2 使用 objdump 生成二进制的相关信息,重定向到文件中: 1 objdump -d ./test > test_dump
生成的 test_dump 文件中包含了二进制文件 test 的汇编代码
3.3.3 在 test_dump 文件中查找发生段错误的地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1 00000000004004c0 <frame_dummy>: 102 4004c0: 48 83 3d 58 09 20 00 cmpq $0x0,0x200958(%rip) # 600e20 <__JCR_END__> 103 4004c7: 00 104 4004c8: 74 1e je 4004e8 <frame_dummy+0x28> 105 4004ca: b8 00 00 00 00 mov $0x0,%eax 106 4004cf: 48 85 c0 test %rax,%rax 107 4004d2: 74 14 je 4004e8 <frame_dummy+0x28> 108 4004d4: 55 push %rbp 109 4004d5: bf 20 0e 60 00 mov $0x600e20,%edi 110 4004da: 48 89 e5 mov %rsp,%rbp 111 4004dd: ff d0 callq *%rax 112 4004df: 5d pop %rbp 113 4004e0: e9 7b ff ff ff jmpq 400460 <register_tm_clones> 114 4004e5: 0f 1f 00 nopl (%rax) 115 4004e8: e9 73 ff ff ff jmpq 400460 <register_tm_clones> 116 117 00000000004004ed <main>: 118 4004ed: 55 push %rbp 119 4004ee: 48 89 e5 mov %rsp,%rbp 120 4004f1: 48 c7 45 f8 a0 05 40 movq $0x4005a0,-0x8(%rbp) 121 4004f8: 00 122 4004f9: 48 8b 45 f8 mov -0x8(%rbp),%rax 123 4004fd: c7 00 54 45 53 54 movl $0x54534554,(%rax) 124 400503: c6 40 04 00 movb $0x0,0x4(%rax) 125 400507: 5d pop %rbp 126 400508: c3 retq 127 400509: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
我截取了一段信息,可以看到段错误发生在 main 函数中这一句,movl $0x54534554,(%rax)
我们对应到相对的源码中,也就定位到段错误了。
注意:如果使用了 gcc 的编译优化选项参数 (-O1, -O2, -O3) 的话,生成的汇编指令将会被优化,汇编代码就会有些不同。
3.4 使用 catchsegv 获取段错误详细信息 这个命令专门用来处理段错误,他会打印出段错误的堆栈信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 *** Segmentation fault Register dump: RAX: 00000000004005a0 RBX: 0000000000000000 RCX: 0000000000400510 RDX: 00007ffd4612de18 RSI: 00007ffd4612de08 RDI: 0000000000000001 RBP: 00007ffd4612dd20 R8 : 00007fafea5bee80 R9 : 0000000000000000 R10: 00007ffd4612d860 R11: 00007fafea217480 R12: 0000000000400400 R13: 00007ffd4612de00 R14: 0000000000000000 R15: 0000000000000000 RSP: 00007ffd4612dd20 RIP: 00000000004004fd EFLAGS: 00010246 CS: 0033 FS: 0000 GS: 0000 Trap: 0000000e Error: 00000007 OldMask: 00000000 CR2: 004005a0 FPUCW: 0000037f FPUSW: 00000000 TAG: 00000000 RIP: 00000000 RDP: 00000000 ST(0) 0000 0000000000000000 ST(1) 0000 0000000000000000 ST(2) 0000 0000000000000000 ST(3) 0000 0000000000000000 ST(4) 0000 0000000000000000 ST(5) 0000 0000000000000000 ST(6) 0000 0000000000000000 ST(7) 0000 0000000000000000 mxcsr: 1f80 XMM0: 00000000000000000000000000000000 XMM1: 00000000000000000000000000000000 XMM2: 00000000000000000000000000000000 XMM3: 00000000000000000000000000000000 XMM4: 00000000000000000000000000000000 XMM5: 00000000000000000000000000000000 XMM6: 00000000000000000000000000000000 XMM7: 00000000000000000000000000000000 XMM8: 00000000000000000000000000000000 XMM9: 00000000000000000000000000000000 XMM10: 00000000000000000000000000000000 XMM11: 00000000000000000000000000000000 XMM12: 00000000000000000000000000000000 XMM13: 00000000000000000000000000000000 XMM14: 00000000000000000000000000000000 XMM15: 00000000000000000000000000000000 Backtrace: /data/home/noahyzhang/test_linux/core/test.c:13(main)[0x4004fd] /lib64/libc.so.6(__libc_start_main+0xf5)[0x7fafea217575] ??:?(_start)[0x400429] Memory map: 00400000-00401000 r-xp 00000000 fc:11 1839082 /data/home/noahyzhang/test_linux/core/test 00600000-00601000 r--p 00000000 fc:11 1839082 /data/home/noahyzhang/test_linux/core/test 00601000-00602000 rw-p 00001000 fc:11 1839082 /data/home/noahyzhang/test_linux/core/test 02554000-02579000 rw-p 00000000 00:00 0 [heap] 7fafe9ddb000-7fafe9df0000 r-xp 00000000 fc:01 5194 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7fafe9df0000-7fafe9fef000 ---p 00015000 fc:01 5194 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7fafe9fef000-7fafe9ff0000 r--p 00014000 fc:01 5194 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7fafe9ff0000-7fafe9ff1000 rw-p 00015000 fc:01 5194 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7fafe9ff1000-7fafe9ff3000 r-xp 00000000 fc:01 25105 /usr/lib64/libdl-2.17.so 7fafe9ff3000-7fafea1f3000 ---p 00002000 fc:01 25105 /usr/lib64/libdl-2.17.so 7fafea1f3000-7fafea1f4000 r--p 00002000 fc:01 25105 /usr/lib64/libdl-2.17.so 7fafea1f4000-7fafea1f5000 rw-p 00003000 fc:01 25105 /usr/lib64/libdl-2.17.so 7fafea1f5000-7fafea3ba000 r-xp 00000000 fc:01 24989 /usr/lib64/libc-2.17.so 7fafea3ba000-7fafea5b9000 ---p 001c5000 fc:01 24989 /usr/lib64/libc-2.17.so 7fafea5b9000-7fafea5bd000 r--p 001c4000 fc:01 24989 /usr/lib64/libc-2.17.so 7fafea5bd000-7fafea5bf000 rw-p 001c8000 fc:01 24989 /usr/lib64/libc-2.17.so 7fafea5bf000-7fafea5c4000 rw-p 00000000 00:00 0 7fafea5c4000-7fafea5c8000 r-xp 00000000 fc:01 24881 /usr/lib64/libSegFault.so 7fafea5c8000-7fafea7c7000 ---p 00004000 fc:01 24881 /usr/lib64/libSegFault.so 7fafea7c7000-7fafea7c8000 r--p 00003000 fc:01 24881 /usr/lib64/libSegFault.so 7fafea7c8000-7fafea7c9000 rw-p 00004000 fc:01 24881 /usr/lib64/libSegFault.so 7fafea7c9000-7fafea7eb000 r-xp 00000000 fc:01 4899 /usr/lib64/ld-2.17.so 7fafea8ca000-7fafea8cc000 rw-p 00000000 00:00 0 7fafea8e1000-7fafea8e4000 r-xp 00000000 fc:01 25620 /usr/lib64/libonion_security.so.1.0.19 7fafea8e4000-7fafea9e4000 ---p 00003000 fc:01 25620 /usr/lib64/libonion_security.so.1.0.19 7fafea9e4000-7fafea9e5000 rw-p 00003000 fc:01 25620 /usr/lib64/libonion_security.so.1.0.19 7fafea9e5000-7fafea9e9000 rw-p 00000000 00:00 0 7fafea9e9000-7fafea9ea000 rw-p 00000000 00:00 0 7fafea9ea000-7fafea9eb000 r--p 00021000 fc:01 4899 /usr/lib64/ld-2.17.so 7fafea9eb000-7fafea9ec000 rw-p 00022000 fc:01 4899 /usr/lib64/ld-2.17.so 7fafea9ec000-7fafea9ed000 rw-p 00000000 00:00 0 7ffd4610e000-7ffd4612f000 rw-p 00000000 00:00 0 [stack] 7ffd4618e000-7ffd46190000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
我们可以在 Backtrace 中看到 /data/home/noahyzhang/test_linux/core/test.c:13(main)[0x4004fd]
,发现提示错误发生在 test.c 的13行。并且给出了指针指令地址。
3.5 其他关于段错误的工具 3.5.1 ldd命令 ldd 命令可以查看二进制程序的共享库依赖,结果包括库的名称、起始地址等,这样就可以确定段错误到底是发生在自己写的程序中还是出现在共享库中。
1 2 3 4 5 6 ldd ./test linux-vdso.so.1 => (0x00007fff7a5f4000) /$LIB/libonion.so => /lib64/libonion.so (0x00007ff00455c000) libc.so.6 => /lib64/libc.so.6 (0x00007ff004074000) libdl.so.2 => /lib64/libdl.so.2 (0x00007ff003e70000) /lib64/ld-linux-x86-64.so.2 (0x00007ff004443000)
3.5.2 日志 其实我们在写代码的时候,加上适当的日志是非常有必要的,这种查看错误的办法是最简单高效的。
为了减少代码编译后的二进制文件大小,我们可以使用条件编译指令 #ifdef DEBUG 、#endif
等把 print 打印函数包起来。这样在程序编译的时候,加上 -DEBUG 参数就可以查看调试信息,不加就不会显示调试信息。这样做可以快速定位问题,也能避免二进制文件大的问题。
4. 规避一些问题
出现段错误时,首先应该想到段错误的定义,从它出发考虑引发错误的原因。
在使用指针时,定义了指针后记得初始化指针,在使用的时候记得判断是否为NULL。
在使用数组时,注意数组是否被初始化,数组下标是否越界,数组元素是否存在等。
在访问变量时,注意变量所占地址空间是否已经被程序释放掉。
在处理变量时,注意变量的格式控制是否合理等。
尽量不要写递归函数,会占用大量的栈空间。
https%3A%2F%2Fwww.cnblogs.com%2Fpanfeng412%2Farchive%2F2011%2F11%2F06%2Fsegmentation-fault-in-linux.html%0Ahttps%3A%2F%2Fblog.csdn.net%2Fu011417820%2Farticle%2Fdetails%2F71435031%0A%0A%23%23%23%20core%E6%96%87%E4%BB%B6%0A%23%23%23%23%23%20%E6%9F%A5%E7%9C%8Bcore%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%EF%BC%9Aulimit%20-a%20%E6%88%96%E8%80%85%20ulimit%20-c%E3%80%82%0A1.%20core%20file%20size%0A%20%20%20unlimited%3A%20core%20%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%A7%E5%B0%8F%E4%B8%8D%E5%8F%97%E9%99%90%E5%88%B6%0A%20%20%200%3A%20%E7%A8%8B%E5%BA%8F%E5%87%BA%E9%94%99%E6%97%B6%E4%B8%8D%E4%BC%9A%E4%BA%A7%E7%94%9Fcore%E6%96%87%E4%BB%B6%0A%20%20%201024%3A%20%E4%BB%A3%E8%A1%A81024k%EF%BC%8Ccore%E6%96%87%E4%BB%B6%E8%B6%85%E8%BF%87%E8%AF%A5%E5%A4%A7%E5%B0%8F%E5%B0%B1%E4%B8%8D%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%86%0A2.%20%E8%AE%BE%E7%BD%AEcore%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%EF%BC%9Aulimit%20-c%20filesize%0A3.%20%E7%A8%8B%E5%BA%8F%E5%A5%94%E6%BA%83%E7%9A%84%E6%97%B6%E5%80%99%E7%94%9F%E6%88%90%E7%9A%84core%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E5%8D%B3%E4%B8%BA%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8D%A0%E7%94%A8%E7%9A%84%E5%86%85%E5%AD%98%E5%A4%A7%E5%B0%8F%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%8F%91%E7%94%9F%E5%A0%86%E6%A0%88%E6%BA%A2%E5%87%BA%EF%BC%8C%E5%88%99%E4%BC%9A%E5%8D%A0%E7%94%A8%E6%9B%B4%E5%A4%A7%E7%9A%84%E5%86%85%E5%AD%98%0A%23%23%23%23%23%20%E8%AE%BE%E7%BD%AEcore%E6%96%87%E4%BB%B6%E7%9A%84%E5%90%8D%E7%A7%B0%E5%92%8C%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84%0A%E9%BB%98%E8%AE%A4%E7%94%9F%E6%88%90%E8%B7%AF%E5%BE%84%EF%BC%9A%E5%9C%A8%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%E7%9A%84%E5%90%8C%E4%B8%80%E8%B7%AF%E5%BE%84%E4%B8%8B%0A%E9%BB%98%E8%AE%A4%E7%94%9F%E6%88%90%E5%90%8D%E5%AD%97%EF%BC%9A%E9%BB%98%E8%AE%A4%E5%90%8D%E5%AD%97%E4%B8%BAcore%EF%BC%8C%E6%96%B0%E7%9A%84core%E6%96%87%E4%BB%B6%E4%BC%9A%E8%A6%86%E7%9B%96%E6%97%A7%E7%9A%84core%E6%96%87%E4%BB%B6%0A1.%20%E8%AE%BE%E7%BD%AEpid%E4%BD%9C%E4%B8%BA%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%0A%20%20%20echo%20%E2%80%9C1%E2%80%9D%20%3E%20%2Fproc%2Fsys%2Fkernel%2Fcore_uses_pid%0A%20%20%20%E6%88%96%E8%80%85%20sysctl%20-w%20kernel.core_uses_pid%3D1%20kernel.core_uses_pid%3D1%0A%20%20%20%E5%85%B6%E4%B8%AD%EF%BC%9A0%E4%BB%A3%E8%A1%A8%E4%B8%8D%E4%BD%BF%E7%94%A8pid%E4%BD%9C%E4%B8%BA%E6%89%A9%E5%B1%95%E5%90%8D%EF%BC%8C1%E4%BB%A3%E8%A1%A8%E4%BD%BF%E7%94%A8%0A2.%20%E6%8E%A7%E5%88%B6core%E6%96%87%E4%BB%B6%E4%BF%9D%E5%AD%98%E4%BD%8D%E7%BD%AE%E5%92%8C%E6%96%87%E4%BB%B6%E5%90%8D%E6%A0%BC%E5%BC%8F%0A%20%20%20%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%E5%91%BD%E5%90%8D%EF%BC%9Aecho%20%22%2Fcorefile%2Fcore-%25e-%25p-%25t%22%20%3E%20%2Fproc%2Fsys%2Fkernel%2Fcore_pattern%0A%20%20%20%E6%88%96%E8%80%85%EF%BC%9Asysctl%20-w%20kernel.core_pattern%3D%2Fcorefile%2Fcore.%25e.%25p.%25s.%25E%0A%20%20%20%E4%B8%8A%E9%9D%A2%E5%91%BD%E4%BB%A4%E5%B0%86core%E6%96%87%E4%BB%B6%E7%BB%9F%E4%B8%80%E7%94%9F%E6%88%90%E5%88%B0%20%2Fcorefile%20%E7%9B%AE%E5%BD%95%E4%B8%8B%E3%80%82%0A%20%20%20%60%60%60%0A%20%20%20%E5%8F%82%E6%95%B0%E5%88%97%E8%A1%A8%0A%20%20%20%25p%20-%20insert%20pid%20into%20filename%20%E6%B7%BB%E5%8A%A0pid(%E8%BF%9B%E7%A8%8Bid)%0A%20%20%20%20%25u%20-%20insert%20current%20uid%20into%20filename%20%E6%B7%BB%E5%8A%A0%E5%BD%93%E5%89%8Duid(%E7%94%A8%E6%88%B7id)%0A%20%20%20%20%25g%20-%20insert%20current%20gid%20into%20filename%20%E6%B7%BB%E5%8A%A0%E5%BD%93%E5%89%8Dgid(%E7%94%A8%E6%88%B7%E7%BB%84id)%0A%20%20%20%20%25s%20-%20insert%20signal%20that%20caused%20the%20coredump%20into%20the%20filename%20%E6%B7%BB%E5%8A%A0%E5%AF%BC%E8%87%B4%E4%BA%A7%E7%94%9Fcore%E7%9A%84%E4%BF%A1%E5%8F%B7%0A%20%20%20%20%25t%20-%20insert%20UNIX%20time%20that%20the%20coredump%20occurred%20into%20filename%20%E6%B7%BB%E5%8A%A0core%E6%96%87%E4%BB%B6%E7%94%9F%E6%88%90%E6%97%B6%E7%9A%84unix%E6%97%B6%E9%97%B4%0A%20%20%20%20%25h%20-%20insert%20hostname%20where%20the%20coredump%20happened%20into%20filename%20%E6%B7%BB%E5%8A%A0%E4%B8%BB%E6%9C%BA%E5%90%8D%0A%20%20%20%20%25e%20-%20insert%20coredumping%20executable%20name%20into%20filename%20%E6%B7%BB%E5%8A%A0%E5%AF%BC%E8%87%B4%E4%BA%A7%E7%94%9Fcore%E7%9A%84%E5%91%BD%E4%BB%A4%E5%90%8D%0A%20%20%20%60%60%60%0A%20%20%20%0A%0Alinux%E4%B8%8B%20c%2Fc%2B%2B%20%E7%BC%96%E7%A8%8B%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E5%B0%B1%E6%98%AF%E9%94%99%E8%AF%AF%E5%B0%B1%E6%98%AF%E6%AE%B5%E9%94%99%E8%AF%AF%E4%BA%86%EF%BC%8C%E6%9C%AC%E6%96%87%E6%9D%A5%E5%88%86%E6%9E%90%E4%B8%80%E4%B8%8B%E6%AE%B5%E9%94%99%E8%AF%AF%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BA%A7%E7%94%9F%EF%BC%9F%E4%BA%A7%E7%94%9F%E7%9A%84%E5%8E%9F%E5%9B%A0%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E3%80%82%0A%0A%23%23%201.%20%E6%AE%B5%E9%94%99%E8%AF%AF%E4%BB%8B%E7%BB%8D%0A%0A%60%60%60%0AA%20segmentation%20fault%20(often%20shortened%20to%20segfault)%20is%20a%20particular%20error%20condition%20that%20can%20occur%20during%20the%20operation%20of%20computer%20software.%20In%20short%2C%20a%20segmentation%20fault%20occurs%20when%20a%20program%20attempts%20to%20access%20a%20memory%20location%20that%20it%20is%20not%20allowed%20to%20access%2C%20or%20attempts%20to%20access%20a%20memory%20location%20in%20a%20way%20that%20is%20not%20allowed%20(e.g.%2C%20attempts%20to%20write%20to%20a%20read-only%20location%2C%20or%20to%20overwrite%20part%20of%20the%20operating%20system).%20Systems%20based%20on%20processors%20like%20the%20Motorola%2068000%20tend%20to%20refer%20to%20these%20events%20as%20Address%20or%20Bus%20errors.%0A%0ASegmentation%20is%20one%20approach%20to%20memory%20management%20and%20protection%20in%20the%20operating%20system.%20It%20has%20been%20superseded%20by%20paging%20for%20most%20purposes%2C%20but%20much%20of%20the%20terminology%20of%20segmentation%20is%20still%20used%2C%20%22segmentation%20fault%22%20being%20an%20example.%20Some%20operating%20systems%20still%20have%20segmentation%20at%20some%20logical%20level%20although%20paging%20is%20used%20as%20the%20main%20memory%20management%20policy.%0A%0AOn%20Unix-like%20operating%20systems%2C%20a%20process%20that%20accesses%20invalid%20memory%20receives%20the%20SIGSEGV%20signal.%20On%20Microsoft%20Windows%2C%20a%20process%20that%20accesses%20invalid%20memory%20receives%20the%20STATUS_ACCESS_VIOLATION%20exception.%0A%60%60%60%0A%0A%E5%88%86%E6%AE%B5%E9%94%99%E8%AF%AF(%E9%80%9A%E5%B8%B8%E7%AE%80%E7%A7%B0%E6%AE%B5%E9%94%99%E8%AF%AF)%E6%98%AF%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%BD%AF%E4%BB%B6%E8%BF%90%E8%A1%8C%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%8F%AF%E8%83%BD%E5%87%BA%E7%8E%B0%E7%9A%84%E4%B8%80%E7%A7%8D%E7%89%B9%E6%AE%8A%E7%9A%84%E9%94%99%E8%AF%AF%E6%83%85%E5%86%B5%E3%80%82%E7%AE%80%E8%80%8C%E8%A8%80%E4%B9%8B%2C%E5%87%BA%E7%8E%B0%E6%AE%B5%E9%94%99%E8%AF%AF%E5%BD%93%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F%E8%AF%95%E5%9B%BE%E8%AE%BF%E9%97%AE%E4%B8%8D%E5%85%81%E8%AE%B8%E8%AE%BF%E9%97%AE%E7%9A%84%E5%86%85%E5%AD%98%E4%BD%8D%E7%BD%AE%2C%E6%88%96%E8%AF%95%E5%9B%BE%E8%AE%BF%E9%97%AE%E4%B8%80%E4%B8%AA%E5%86%85%E5%AD%98%E4%BD%8D%E7%BD%AE%E7%9A%84%E6%96%B9%E5%BC%8F%E6%98%AF%E4%B8%8D%E5%85%81%E8%AE%B8%E7%9A%84(%E4%BE%8B%E5%A6%82%2C%E8%AF%95%E5%9B%BE%E5%86%99%E4%B8%80%E4%B8%AA%E5%8F%AA%E8%AF%BB%E7%9A%84%E4%BD%8D%E7%BD%AE%2C%E6%88%96%E8%A6%86%E7%9B%96%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86)%E3%80%82%E5%9F%BA%E4%BA%8E%E5%83%8F%E6%91%A9%E6%89%98%E7%BD%97%E6%8B%8968000%E5%A4%84%E7%90%86%E5%99%A8%E7%9A%84%E7%B3%BB%E7%BB%9F%E5%BE%80%E5%BE%80%E5%B0%86%E8%BF%99%E4%BA%9B%E4%BA%8B%E4%BB%B6%E7%A7%B0%E4%B8%BA%E5%9C%B0%E5%9D%80%E6%88%96%E6%80%BB%E7%BA%BF%E9%94%99%E8%AF%AF%E3%80%82%0A%0A%E5%88%86%E6%AE%B5%E6%98%AF%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E5%92%8C%E4%BF%9D%E6%8A%A4%E7%9A%84%E4%B8%80%E7%A7%8D%E6%96%B9%E6%B3%95%E3%80%82%E5%9C%A8%E5%A4%A7%E5%A4%9A%E6%95%B0%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E5%AE%83%E5%B7%B2%E7%BB%8F%E8%A2%AB%E5%88%86%E9%A1%B5%E6%89%80%E5%8F%96%E4%BB%A3%EF%BC%8C%E4%BD%86%E6%98%AF%E5%88%86%E6%AE%B5%E7%9A%84%E8%AE%B8%E5%A4%9A%E6%9C%AF%E8%AF%AD%E4%BB%8D%E7%84%B6%E8%A2%AB%E4%BD%BF%E7%94%A8%EF%BC%8C%E2%80%9C%E5%88%86%E6%AE%B5%E6%95%85%E9%9A%9C%E2%80%9D%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E4%BE%8B%E5%AD%90%E3%80%82%E5%B0%BD%E7%AE%A1%E5%88%86%E9%A1%B5%E8%A2%AB%E7%94%A8%E4%BD%9C%E4%B8%BB%E8%A6%81%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E7%AD%96%E7%95%A5%EF%BC%8C%E4%BD%86%E4%B8%80%E4%BA%9B%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%9C%A8%E6%9F%90%E4%BA%9B%E9%80%BB%E8%BE%91%E7%BA%A7%E5%88%AB%E4%B8%8A%E4%BB%8D%E7%84%B6%E6%9C%89%E5%88%86%E6%AE%B5%E3%80%82%0A%0A%E5%9C%A8%E7%B1%BBunix%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%B8%8A%EF%BC%8C%E8%AE%BF%E9%97%AE%E6%97%A0%E6%95%88%E5%86%85%E5%AD%98%E7%9A%84%E8%BF%9B%E7%A8%8B%E6%8E%A5%E6%94%B6SIGSEGV%E4%BF%A1%E5%8F%B7%E3%80%82%E5%9C%A8Microsoft%20Windows%E4%B8%8A%EF%BC%8C%E8%AE%BF%E9%97%AE%E6%97%A0%E6%95%88%E5%86%85%E5%AD%98%E7%9A%84%E8%BF%9B%E7%A8%8B%E4%BC%9A%E6%94%B6%E5%88%B0status_access_%E8%BF%9D%E4%BE%8B%E5%BC%82%E5%B8%B8%E3%80%82%0A%0A%23%23%202.%20%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BA%A7%E7%94%9F%E6%AE%B5%E9%94%99%E8%AF%AF%0A%0A%23%23%23%23%202.1%20%E8%AE%BF%E9%97%AE%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%E5%86%85%E5%AD%98%E5%9C%B0%E5%9D%80%0A%0A%60%60%60c%2B%2B%0Aint*%20ptr%20%3D%20NULL%3B%0A*ptr%20%3D%201%3B%0A%60%60%60%0A%0A%23%23%23%23%202.2%20%E8%AE%BF%E9%97%AE%E4%B8%8D%E5%85%81%E8%AE%B8%E8%AE%BF%E9%97%AE%E7%9A%84%E5%9C%B0%E5%9D%80%0A%0A%60%60%60c%2B%2B%0Aint*%20ptr%20%3D%20(int*)0%3B%0A*ptr%20%3D%201%3B%0A%60%60%60%0A%0A%23%23%23%23%202.3%20%E5%86%99%E5%8F%AA%E8%AF%BB%E7%9A%84%E5%86%85%E5%AD%98%E5%9C%B0%E5%9D%80%0A%0A%60%60%60c%2B%2B%0Achar*%20ptr%20%3D%20%22test%22%3B%0Astrcpy(ptr%2C%22TEST%22)%3B%0A%60%60%60%0A%0A%23%23%23%23%202.4%20%E6%A0%88%E6%BA%A2%E5%87%BA%0A%0A%E4%B8%80%E8%88%AC%E5%A4%9A%E5%87%BA%E7%8E%B0%E4%BA%8E%E9%80%92%E5%BD%92%E5%87%BD%E6%95%B0%EF%BC%8C%E6%88%96%E4%BD%BF%E7%94%A8%E6%A0%88%E7%A9%BA%E9%97%B4%E8%BF%87%E9%87%8F%E3%80%82%0A%0A%E8%BF%98%E6%9C%89%E5%BE%88%E5%A4%9A%E5%85%B6%E4%BB%96%E5%8E%9F%E5%9B%A0%0A%0A%23%23%203.%20%E6%9F%A5%E7%9C%8B%E6%AE%B5%E9%94%99%E8%AF%AF%E4%BF%A1%E6%81%AF%0A%0A%23%23%23%23%203.1%20dmesg%0A%0A%E8%BF%99%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%94%A8%E6%9D%A5%E6%A3%80%E6%9F%A5%E5%92%8C%E6%8E%A7%E5%88%B6%E5%86%85%E6%A0%B8%E7%9A%84%E7%8E%AF%E5%BD%A2%E7%BC%93%E5%86%B2%E5%8C%BA%EF%BC%8C%E5%85%B6%E5%AE%9E%E5%B0%B1%E6%98%AF%E5%9C%A8%E6%A3%80%E6%9F%A5%20%2Fvar%2Flog%2Fdemsg%20%E6%97%A5%E5%BF%97%E3%80%82%E9%BB%98%E8%AE%A4%E6%93%8D%E4%BD%9C%E5%B0%B1%E6%98%AF%E6%98%BE%E7%A4%BA%E6%89%80%E6%9C%89%E6%9D%A5%E8%87%AA%E4%BA%8E%E5%86%85%E6%A0%B8%E7%BC%93%E5%86%B2%E5%8C%BA%E7%A9%BA%E9%97%B4%E7%9A%84%E6%B6%88%E6%81%AF%E3%80%82%E8%80%8C%E6%AE%B5%E9%94%99%E8%AF%AF%E6%9D%A5%E8%87%AA%E4%BA%8E%E5%86%85%E6%A0%B8%E7%9A%84%E6%8A%A5%E9%94%99%EF%BC%8C%E5%9B%A0%E6%AD%A4%E4%B9%9F%E4%BC%9A%E5%86%99%E5%85%A5%E5%88%B0%E8%BF%99%E4%B8%AA%E6%97%A5%E5%BF%97%E4%B8%AD%E3%80%82%0A%0A%60%60%60shell%0A%E6%89%A7%E8%A1%8C%20demsg%20%E4%B9%8B%E5%90%8E%0A%E7%BB%93%E6%9E%9C%EF%BC%9A%0A%5B7612059.013222%5D%20test%5B10997%5D%3A%20segfault%20at%204005a0%20ip%2000000000004004fd%20sp%2000007ffdc00a0370%20error%207%20in%20test%5B400000%2B1000%5D%0A%5B7612082.776055%5D%20test%5B11162%5D%3A%20segfault%20at%204005a0%20ip%2000000000004004fd%20sp%2000007fffbe060180%20error%207%20in%20test%5B400000%2B1000%5D%0A%60%60%60%0A%0A%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E6%96%AD%E9%94%99%E8%AF%AF%E5%8F%91%E7%94%9F%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E5%90%8D%E7%A7%B0%E3%80%81%E5%BC%95%E8%B5%B7%E6%AE%B5%E9%94%99%E8%AF%AF%E5%8F%91%E7%94%9F%E7%9A%84%E5%86%85%E5%AD%98%E5%9C%B0%E5%9D%80%E3%80%81%E6%8C%87%E4%BB%A4%E6%8C%87%E9%92%88%E5%9C%B0%E5%9D%80%E3%80%81%E5%A0%86%E6%A0%88%E6%8C%87%E9%92%88%E5%9C%B0%E5%9D%80%E3%80%81%E9%94%99%E8%AF%AF%E4%BB%A3%E7%A0%81%E3%80%81%E9%94%99%E8%AF%AF%E5%8E%9F%E5%9B%A0%E7%AD%89%E7%AD%89%E4%BF%A1%E6%81%AF%E3%80%82%0A%0A%23%23%23%23%203.2%20%E5%88%86%E6%9E%90%E4%BA%A7%E7%94%9F%E7%9A%84%20core%20%E6%96%87%E4%BB%B6%0A%0A%E4%BD%BF%E7%94%A8%20gcc%2Fg%2B%2B%20%E5%9C%A8%E7%BC%96%E8%AF%91%E7%9A%84%E6%97%B6%E5%80%99%E5%8A%A0%E4%B8%8A%20-g%20%E9%80%89%E9%A1%B9%EF%BC%8C%E4%BD%BF%E7%94%9F%E6%88%90%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E4%B8%AD%E5%8A%A0%E5%85%A5%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%BA%8E%20gdb%20%E8%B0%83%E8%AF%95%E7%9A%84%E4%BF%A1%E6%81%AF%E3%80%82%0A%0Alinux%20%E7%94%9F%E6%88%90%20core%20%E6%96%87%E4%BB%B6%EF%BC%8C%E9%9C%80%E8%A6%81%E6%89%93%E5%BC%80%E7%94%9F%E6%88%90%20core%20%E6%96%87%E4%BB%B6%E7%9A%84%E9%80%89%E9%A1%B9%0A%0A%23%23%23%23%23%203.2.1%20%E6%9F%A5%E7%9C%8Bcore%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%EF%BC%9Aulimit%20-a%20%E6%88%96%E8%80%85%20ulimit%20-c%E3%80%82%0A%0A1.%20core%20file%20size%0A%0A%20%20%20unlimited%3A%20core%20%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%A7%E5%B0%8F%E4%B8%8D%E5%8F%97%E9%99%90%E5%88%B6%0A%0A%20%20%200%3A%20%E7%A8%8B%E5%BA%8F%E5%87%BA%E9%94%99%E6%97%B6%E4%B8%8D%E4%BC%9A%E4%BA%A7%E7%94%9Fcore%E6%96%87%E4%BB%B6%0A%0A%20%20%201024%3A%20%E4%BB%A3%E8%A1%A81024k%EF%BC%8Ccore%E6%96%87%E4%BB%B6%E8%B6%85%E8%BF%87%E8%AF%A5%E5%A4%A7%E5%B0%8F%E5%B0%B1%E4%B8%8D%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%86%0A%0A2.%20%E8%AE%BE%E7%BD%AEcore%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%EF%BC%9Aulimit%20-c%20filesize%0A%0A3.%20%E7%A8%8B%E5%BA%8F%E5%A5%94%E6%BA%83%E7%9A%84%E6%97%B6%E5%80%99%E7%94%9F%E6%88%90%E7%9A%84core%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E5%8D%B3%E4%B8%BA%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8D%A0%E7%94%A8%E7%9A%84%E5%86%85%E5%AD%98%E5%A4%A7%E5%B0%8F%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%8F%91%E7%94%9F%E5%A0%86%E6%A0%88%E6%BA%A2%E5%87%BA%EF%BC%8C%E5%88%99%E4%BC%9A%E5%8D%A0%E7%94%A8%E6%9B%B4%E5%A4%A7%E7%9A%84%E5%86%85%E5%AD%98%0A%0A%23%23%23%23%23%203.2.2%20%E8%AE%BE%E7%BD%AEcore%E6%96%87%E4%BB%B6%E7%9A%84%E5%90%8D%E7%A7%B0%E5%92%8C%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84%0A%0A%E2%80%8B%09%E9%BB%98%E8%AE%A4%E7%94%9F%E6%88%90%E8%B7%AF%E5%BE%84%EF%BC%9A%E5%9C%A8%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%E7%9A%84%E5%90%8C%E4%B8%80%E8%B7%AF%E5%BE%84%E4%B8%8B%0A%0A%E2%80%8B%09%E9%BB%98%E8%AE%A4%E7%94%9F%E6%88%90%E5%90%8D%E5%AD%97%EF%BC%9A%E9%BB%98%E8%AE%A4%E5%90%8D%E5%AD%97%E4%B8%BAcore%EF%BC%8C%E6%96%B0%E7%9A%84core%E6%96%87%E4%BB%B6%E4%BC%9A%E8%A6%86%E7%9B%96%E6%97%A7%E7%9A%84core%E6%96%87%E4%BB%B6%0A%0A1.%20%E8%AE%BE%E7%BD%AEpid%E4%BD%9C%E4%B8%BA%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%0A%0A%20%20%20echo%20%E2%80%9C1%E2%80%9D%20%3E%20%2Fproc%2Fsys%2Fkernel%2Fcore_uses_pid%0A%0A%20%20%20%E6%88%96%E8%80%85%20sysctl%20-w%20kernel.core_uses_pid%3D1%20kernel.core_uses_pid%3D1%0A%0A%20%20%20%E5%85%B6%E4%B8%AD%EF%BC%9A0%E4%BB%A3%E8%A1%A8%E4%B8%8D%E4%BD%BF%E7%94%A8pid%E4%BD%9C%E4%B8%BA%E6%89%A9%E5%B1%95%E5%90%8D%EF%BC%8C1%E4%BB%A3%E8%A1%A8%E4%BD%BF%E7%94%A8%0A%0A2.%20%E6%8E%A7%E5%88%B6core%E6%96%87%E4%BB%B6%E4%BF%9D%E5%AD%98%E4%BD%8D%E7%BD%AE%E5%92%8C%E6%96%87%E4%BB%B6%E5%90%8D%E6%A0%BC%E5%BC%8F%0A%0A%20%20%20%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%E5%91%BD%E5%90%8D%EF%BC%9Aecho%20%22%2Fcorefile%2Fcore-%25e-%25p-%25t%22%20%3E%20%2Fproc%2Fsys%2Fkernel%2Fcore_pattern%0A%0A%20%20%20%E6%88%96%E8%80%85%EF%BC%9Asysctl%20-w%20kernel.core_pattern%3D%2Fcorefile%2Fcore.%25e.%25p.%25s.%25E%0A%0A%20%20%20%E4%B8%8A%E9%9D%A2%E5%91%BD%E4%BB%A4%E5%B0%86core%E6%96%87%E4%BB%B6%E7%BB%9F%E4%B8%80%E7%94%9F%E6%88%90%E5%88%B0%20%2Fcorefile%20%E7%9B%AE%E5%BD%95%E4%B8%8B%E3%80%82%0A%0A%20%20%20%60%60%60shell%0A%20%20%20%E5%8F%82%E6%95%B0%E5%88%97%E8%A1%A8%0A%20%20%20%0A%20%20%20%25p%20-%20insert%20pid%20into%20filename%20%E6%B7%BB%E5%8A%A0pid(%E8%BF%9B%E7%A8%8Bid)%0A%20%20%20%0A%20%20%20%25u%20-%20insert%20current%20uid%20into%20filename%20%E6%B7%BB%E5%8A%A0%E5%BD%93%E5%89%8Duid(%E7%94%A8%E6%88%B7id)%0A%20%20%20%0A%20%20%20%25g%20-%20insert%20current%20gid%20into%20filename%20%E6%B7%BB%E5%8A%A0%E5%BD%93%E5%89%8Dgid(%E7%94%A8%E6%88%B7%E7%BB%84id)%0A%20%20%20%0A%20%20%20%25s%20-%20insert%20signal%20that%20caused%20the%20coredump%20into%20the%20filename%20%E6%B7%BB%E5%8A%A0%E5%AF%BC%E8%87%B4%E4%BA%A7%E7%94%9Fcore%E7%9A%84%E4%BF%A1%E5%8F%B7%0A%20%20%20%0A%20%20%20%25t%20-%20insert%20UNIX%20time%20that%20the%20coredump%20occurred%20into%20filename%20%E6%B7%BB%E5%8A%A0core%E6%96%87%E4%BB%B6%E7%94%9F%E6%88%90%E6%97%B6%E7%9A%84unix%E6%97%B6%E9%97%B4%0A%20%20%20%0A%20%20%20%25h%20-%20insert%20hostname%20where%20the%20coredump%20happened%20into%20filename%20%E6%B7%BB%E5%8A%A0%E4%B8%BB%E6%9C%BA%E5%90%8D%0A%20%20%20%0A%20%20%20%25e%20-%20insert%20coredumping%20executable%20name%20into%20filename%20%E6%B7%BB%E5%8A%A0%E5%AF%BC%E8%87%B4%E4%BA%A7%E7%94%9Fcore%E7%9A%84%E5%91%BD%E4%BB%A4%E5%90%8D%0A%20%20%20%60%60%60%0A%0A%E6%8E%A5%E4%B8%8B%E9%87%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20gdb%20%E6%9D%A5%E8%B0%83%E8%AF%95%E7%94%9F%E6%88%90%E7%9A%84%20core%20%E6%96%87%E4%BB%B6%E3%80%82%0A%0A%23%23%23%23%203.3%20%E4%BD%BF%E7%94%A8%20objdump%20%E6%9F%A5%E7%9C%8B%E6%B1%87%E7%BC%96%E4%BB%A3%E7%A0%81%0A%0A%23%23%23%23%23%203.3.1%20%E4%BD%BF%E7%94%A8dmesg%20%E5%91%BD%E4%BB%A4%EF%BC%8C%E6%89%BE%E5%88%B0%E5%8F%91%E7%94%9F%E6%AE%B5%E9%94%99%E8%AF%AF%E7%9A%84%E5%9C%B0%E5%9D%80%0A%0A%60%60%60%0A%5B7612082.776055%5D%20test%5B11162%5D%3A%20segfault%20at%204005a0%20ip%2000000000004004fd%20sp%2000007fffbe060180%20error%207%20in%20test%5B400000%2B1000%5D%0A%60%60%60%0A%0A%E5%8F%AF%E7%9F%A5%E5%8F%91%E7%94%9F%E6%AE%B5%E9%94%99%E8%AF%AF%E7%9A%84%E5%9C%B0%E5%9D%80%EF%BC%9A4005a0%EF%BC%8C%E7%9B%B8%E5%AF%B9%E4%BA%8E%E7%9A%84%E6%8C%87%E4%BB%A4%E6%8C%87%E9%92%88%E5%9C%B0%E5%9D%80%EF%BC%9A00000000004004fd%E3%80%82%0A%0A%23%23%23%23%23%203.3.2%20%E4%BD%BF%E7%94%A8%20objdump%20%E7%94%9F%E6%88%90%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9A%84%E7%9B%B8%E5%85%B3%E4%BF%A1%E6%81%AF%EF%BC%8C%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%96%87%E4%BB%B6%E4%B8%AD%EF%BC%9A%0A%0A%60%60%60%0Aobjdump%20-d%20.%2Ftest%20%3E%20test_dump%0A%60%60%60%0A%0A%E7%94%9F%E6%88%90%E7%9A%84%20test_dump%20%E6%96%87%E4%BB%B6%E4%B8%AD%E5%8C%85%E5%90%AB%E4%BA%86%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%20test%20%E7%9A%84%E6%B1%87%E7%BC%96%E4%BB%A3%E7%A0%81%0A%0A%23%23%23%23%23%203.3.3%20%E5%9C%A8%20test_dump%20%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%8F%91%E7%94%9F%E6%AE%B5%E9%94%99%E8%AF%AF%E7%9A%84%E5%9C%B0%E5%9D%80%0A%0A%60%60%60shell%0A1%2000000000004004c0%20%3Cframe_dummy%3E%3A%0A102%20%20%204004c0%3A%20%20%2048%2083%203d%2058%2009%2020%2000%20%20%20%20cmpq%20%20%20%240x0%2C0x200958(%25rip)%20%20%20%20%20%20%20%20%23%20600e20%20%3C__JCR_END__%3E%0A103%20%20%204004c7%3A%20%20%2000%0A104%20%20%204004c8%3A%20%20%2074%201e%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20je%20%20%20%20%204004e8%20%3Cframe_dummy%2B0x28%3E%0A105%20%20%204004ca%3A%20%20%20b8%2000%2000%2000%2000%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20%240x0%2C%25eax%0A106%20%20%204004cf%3A%20%20%2048%2085%20c0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20test%20%20%20%25rax%2C%25rax%0A107%20%20%204004d2%3A%20%20%2074%2014%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20je%20%20%20%20%204004e8%20%3Cframe_dummy%2B0x28%3E%0A108%20%20%204004d4%3A%20%20%2055%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20push%20%20%20%25rbp%0A109%20%20%204004d5%3A%20%20%20bf%2020%200e%2060%2000%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20%240x600e20%2C%25edi%0A110%20%20%204004da%3A%20%20%2048%2089%20e5%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20%25rsp%2C%25rbp%0A111%20%20%204004dd%3A%20%20%20ff%20d0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20callq%20%20*%25rax%0A112%20%20%204004df%3A%20%20%205d%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pop%20%20%20%20%25rbp%0A113%20%20%204004e0%3A%20%20%20e9%207b%20ff%20ff%20ff%20%20%20%20%20%20%20%20%20%20jmpq%20%20%20400460%20%3Cregister_tm_clones%3E%0A114%20%20%204004e5%3A%20%20%200f%201f%2000%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nopl%20%20%20(%25rax)%0A115%20%20%204004e8%3A%20%20%20e9%2073%20ff%20ff%20ff%20%20%20%20%20%20%20%20%20%20jmpq%20%20%20400460%20%3Cregister_tm_clones%3E%0A116%20%0A117%2000000000004004ed%20%3Cmain%3E%3A%0A118%20%20%204004ed%3A%20%20%2055%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20push%20%20%20%25rbp%0A119%20%20%204004ee%3A%20%20%2048%2089%20e5%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20%25rsp%2C%25rbp%0A120%20%20%204004f1%3A%20%20%2048%20c7%2045%20f8%20a0%2005%2040%20%20%20%20movq%20%20%20%240x4005a0%2C-0x8(%25rbp)%0A121%20%20%204004f8%3A%20%20%2000%0A122%20%20%204004f9%3A%20%20%2048%208b%2045%20f8%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20-0x8(%25rbp)%2C%25rax%0A123%20%20%204004fd%3A%20%20%20c7%2000%2054%2045%2053%2054%20%20%20%20%20%20%20movl%20%20%20%240x54534554%2C(%25rax)%0A124%20%20%20400503%3A%20%20%20c6%2040%2004%2000%20%20%20%20%20%20%20%20%20%20%20%20%20movb%20%20%20%240x0%2C0x4(%25rax)%0A125%20%20%20400507%3A%20%20%205d%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pop%20%20%20%20%25rbp%0A126%20%20%20400508%3A%20%20%20c3%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20retq%0A127%20%20%20400509%3A%20%20%200f%201f%2080%2000%2000%2000%2000%20%20%20%20nopl%20%20%200x0(%25rax)%0A%60%60%60%0A%0A%E6%88%91%E6%88%AA%E5%8F%96%E4%BA%86%E4%B8%80%E6%AE%B5%E4%BF%A1%E6%81%AF%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E6%AE%B5%E9%94%99%E8%AF%AF%E5%8F%91%E7%94%9F%E5%9C%A8%20main%20%E5%87%BD%E6%95%B0%E4%B8%AD%E8%BF%99%E4%B8%80%E5%8F%A5%EF%BC%8C%60%20movl%20%240x54534554%2C(%25rax)%20%60%20%20%E6%88%91%E4%BB%AC%E5%AF%B9%E5%BA%94%E5%88%B0%E7%9B%B8%E5%AF%B9%E7%9A%84%E6%BA%90%E7%A0%81%E4%B8%AD%EF%BC%8C%E4%B9%9F%E5%B0%B1%E5%AE%9A%E4%BD%8D%E5%88%B0%E6%AE%B5%E9%94%99%E8%AF%AF%E4%BA%86%E3%80%82%0A%0A%E6%B3%A8%E6%84%8F%EF%BC%9A%E5%A6%82%E6%9E%9C%E4%BD%BF%E7%94%A8%E4%BA%86%20gcc%20%E7%9A%84%E7%BC%96%E8%AF%91%E4%BC%98%E5%8C%96%E9%80%89%E9%A1%B9%E5%8F%82%E6%95%B0%20(-O1%2C%20-O2%2C%20-O3)%20%E7%9A%84%E8%AF%9D%EF%BC%8C%E7%94%9F%E6%88%90%E7%9A%84%E6%B1%87%E7%BC%96%E6%8C%87%E4%BB%A4%E5%B0%86%E4%BC%9A%E8%A2%AB%E4%BC%98%E5%8C%96%EF%BC%8C%E6%B1%87%E7%BC%96%E4%BB%A3%E7%A0%81%E5%B0%B1%E4%BC%9A%E6%9C%89%E4%BA%9B%E4%B8%8D%E5%90%8C%E3%80%82%0A%0A%23%23%23%23%203.4%20%E4%BD%BF%E7%94%A8%20catchsegv%20%E8%8E%B7%E5%8F%96%E6%AE%B5%E9%94%99%E8%AF%AF%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF%0A%0A%E8%BF%99%E4%B8%AA%E5%91%BD%E4%BB%A4%E4%B8%93%E9%97%A8%E7%94%A8%E6%9D%A5%E5%A4%84%E7%90%86%E6%AE%B5%E9%94%99%E8%AF%AF%EF%BC%8C%E4%BB%96%E4%BC%9A%E6%89%93%E5%8D%B0%E5%87%BA%E6%AE%B5%E9%94%99%E8%AF%AF%E7%9A%84%E5%A0%86%E6%A0%88%E4%BF%A1%E6%81%AF%E3%80%82%0A%0A%60%60%60%0A***%20Segmentation%20fault%0ARegister%20dump%3A%0A%0A%20RAX%3A%2000000000004005a0%20%20%20RBX%3A%200000000000000000%20%20%20RCX%3A%200000000000400510%0A%20RDX%3A%2000007ffd4612de18%20%20%20RSI%3A%2000007ffd4612de08%20%20%20RDI%3A%200000000000000001%0A%20RBP%3A%2000007ffd4612dd20%20%20%20R8%20%3A%2000007fafea5bee80%20%20%20R9%20%3A%200000000000000000%0A%20R10%3A%2000007ffd4612d860%20%20%20R11%3A%2000007fafea217480%20%20%20R12%3A%200000000000400400%0A%20R13%3A%2000007ffd4612de00%20%20%20R14%3A%200000000000000000%20%20%20R15%3A%200000000000000000%0A%20RSP%3A%2000007ffd4612dd20%0A%0A%20RIP%3A%2000000000004004fd%20%20%20EFLAGS%3A%2000010246%0A%0A%20CS%3A%200033%20%20%20FS%3A%200000%20%20%20GS%3A%200000%0A%0A%20Trap%3A%200000000e%20%20%20Error%3A%2000000007%20%20%20OldMask%3A%2000000000%20%20%20CR2%3A%20004005a0%0A%0A%20FPUCW%3A%200000037f%20%20%20FPUSW%3A%2000000000%20%20%20TAG%3A%2000000000%0A%20RIP%3A%2000000000%20%20%20RDP%3A%2000000000%0A%0A%20ST(0)%200000%200000000000000000%20%20%20ST(1)%200000%200000000000000000%0A%20ST(2)%200000%200000000000000000%20%20%20ST(3)%200000%200000000000000000%0A%20ST(4)%200000%200000000000000000%20%20%20ST(5)%200000%200000000000000000%0A%20ST(6)%200000%200000000000000000%20%20%20ST(7)%200000%200000000000000000%0A%20mxcsr%3A%201f80%0A%20XMM0%3A%20%2000000000000000000000000000000000%20XMM1%3A%20%2000000000000000000000000000000000%0A%20XMM2%3A%20%2000000000000000000000000000000000%20XMM3%3A%20%2000000000000000000000000000000000%0A%20XMM4%3A%20%2000000000000000000000000000000000%20XMM5%3A%20%2000000000000000000000000000000000%0A%20XMM6%3A%20%2000000000000000000000000000000000%20XMM7%3A%20%2000000000000000000000000000000000%0A%20XMM8%3A%20%2000000000000000000000000000000000%20XMM9%3A%20%2000000000000000000000000000000000%0A%20XMM10%3A%2000000000000000000000000000000000%20XMM11%3A%2000000000000000000000000000000000%0A%20XMM12%3A%2000000000000000000000000000000000%20XMM13%3A%2000000000000000000000000000000000%0A%20XMM14%3A%2000000000000000000000000000000000%20XMM15%3A%2000000000000000000000000000000000%0A%0ABacktrace%3A%0A%2Fdata%2Fhome%2Fnoahyzhang%2Ftest_linux%2Fcore%2Ftest.c%3A13(main)%5B0x4004fd%5D%0A%2Flib64%2Flibc.so.6(__libc_start_main%2B0xf5)%5B0x7fafea217575%5D%0A%3F%3F%3A%3F(_start)%5B0x400429%5D%0A%0AMemory%20map%3A%0A%0A00400000-00401000%20r-xp%2000000000%20fc%3A11%201839082%20%2Fdata%2Fhome%2Fnoahyzhang%2Ftest_linux%2Fcore%2Ftest%0A00600000-00601000%20r--p%2000000000%20fc%3A11%201839082%20%2Fdata%2Fhome%2Fnoahyzhang%2Ftest_linux%2Fcore%2Ftest%0A00601000-00602000%20rw-p%2000001000%20fc%3A11%201839082%20%2Fdata%2Fhome%2Fnoahyzhang%2Ftest_linux%2Fcore%2Ftest%0A02554000-02579000%20rw-p%2000000000%2000%3A00%200%20%5Bheap%5D%0A7fafe9ddb000-7fafe9df0000%20r-xp%2000000000%20fc%3A01%205194%20%2Fusr%2Flib64%2Flibgcc_s-4.8.5-20150702.so.1%0A7fafe9df0000-7fafe9fef000%20---p%2000015000%20fc%3A01%205194%20%2Fusr%2Flib64%2Flibgcc_s-4.8.5-20150702.so.1%0A7fafe9fef000-7fafe9ff0000%20r--p%2000014000%20fc%3A01%205194%20%2Fusr%2Flib64%2Flibgcc_s-4.8.5-20150702.so.1%0A7fafe9ff0000-7fafe9ff1000%20rw-p%2000015000%20fc%3A01%205194%20%2Fusr%2Flib64%2Flibgcc_s-4.8.5-20150702.so.1%0A7fafe9ff1000-7fafe9ff3000%20r-xp%2000000000%20fc%3A01%2025105%20%2Fusr%2Flib64%2Flibdl-2.17.so%0A7fafe9ff3000-7fafea1f3000%20---p%2000002000%20fc%3A01%2025105%20%2Fusr%2Flib64%2Flibdl-2.17.so%0A7fafea1f3000-7fafea1f4000%20r--p%2000002000%20fc%3A01%2025105%20%2Fusr%2Flib64%2Flibdl-2.17.so%0A7fafea1f4000-7fafea1f5000%20rw-p%2000003000%20fc%3A01%2025105%20%2Fusr%2Flib64%2Flibdl-2.17.so%0A7fafea1f5000-7fafea3ba000%20r-xp%2000000000%20fc%3A01%2024989%20%2Fusr%2Flib64%2Flibc-2.17.so%0A7fafea3ba000-7fafea5b9000%20---p%20001c5000%20fc%3A01%2024989%20%2Fusr%2Flib64%2Flibc-2.17.so%0A7fafea5b9000-7fafea5bd000%20r--p%20001c4000%20fc%3A01%2024989%20%2Fusr%2Flib64%2Flibc-2.17.so%0A7fafea5bd000-7fafea5bf000%20rw-p%20001c8000%20fc%3A01%2024989%20%2Fusr%2Flib64%2Flibc-2.17.so%0A7fafea5bf000-7fafea5c4000%20rw-p%2000000000%2000%3A00%200%0A7fafea5c4000-7fafea5c8000%20r-xp%2000000000%20fc%3A01%2024881%20%2Fusr%2Flib64%2FlibSegFault.so%0A7fafea5c8000-7fafea7c7000%20---p%2000004000%20fc%3A01%2024881%20%2Fusr%2Flib64%2FlibSegFault.so%0A7fafea7c7000-7fafea7c8000%20r--p%2000003000%20fc%3A01%2024881%20%2Fusr%2Flib64%2FlibSegFault.so%0A7fafea7c8000-7fafea7c9000%20rw-p%2000004000%20fc%3A01%2024881%20%2Fusr%2Flib64%2FlibSegFault.so%0A7fafea7c9000-7fafea7eb000%20r-xp%2000000000%20fc%3A01%204899%20%2Fusr%2Flib64%2Fld-2.17.so%0A7fafea8ca000-7fafea8cc000%20rw-p%2000000000%2000%3A00%200%0A7fafea8e1000-7fafea8e4000%20r-xp%2000000000%20fc%3A01%2025620%20%2Fusr%2Flib64%2Flibonion_security.so.1.0.19%0A7fafea8e4000-7fafea9e4000%20---p%2000003000%20fc%3A01%2025620%20%2Fusr%2Flib64%2Flibonion_security.so.1.0.19%0A7fafea9e4000-7fafea9e5000%20rw-p%2000003000%20fc%3A01%2025620%20%2Fusr%2Flib64%2Flibonion_security.so.1.0.19%0A7fafea9e5000-7fafea9e9000%20rw-p%2000000000%2000%3A00%200%0A7fafea9e9000-7fafea9ea000%20rw-p%2000000000%2000%3A00%200%0A7fafea9ea000-7fafea9eb000%20r--p%2000021000%20fc%3A01%204899%20%2Fusr%2Flib64%2Fld-2.17.so%0A7fafea9eb000-7fafea9ec000%20rw-p%2000022000%20fc%3A01%204899%20%2Fusr%2Flib64%2Fld-2.17.so%0A7fafea9ec000-7fafea9ed000%20rw-p%2000000000%2000%3A00%200%0A7ffd4610e000-7ffd4612f000%20rw-p%2000000000%2000%3A00%200%20%5Bstack%5D%0A7ffd4618e000-7ffd46190000%20r-xp%2000000000%2000%3A00%200%20%5Bvdso%5D%0Affffffffff600000-ffffffffff601000%20r-xp%2000000000%2000%3A00%200%20%5Bvsyscall%5D%0A%60%60%60%0A%0A%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%9C%A8%20Backtrace%20%E4%B8%AD%E7%9C%8B%E5%88%B0%20%60%20%2Fdata%2Fhome%2Fnoahyzhang%2Ftest_linux%2Fcore%2Ftest.c%3A13(main)%5B0x4004fd%5D%60%EF%BC%8C%E5%8F%91%E7%8E%B0%E6%8F%90%E7%A4%BA%E9%94%99%E8%AF%AF%E5%8F%91%E7%94%9F%E5%9C%A8%20test.c%20%E7%9A%8413%E8%A1%8C%E3%80%82%E5%B9%B6%E4%B8%94%E7%BB%99%E5%87%BA%E4%BA%86%E6%8C%87%E9%92%88%E6%8C%87%E4%BB%A4%E5%9C%B0%E5%9D%80%E3%80%82%0A%0A%23%23%23%23%203.5%20%E5%85%B6%E4%BB%96%E5%85%B3%E4%BA%8E%E6%AE%B5%E9%94%99%E8%AF%AF%E7%9A%84%E5%B7%A5%E5%85%B7%0A%0A%23%23%23%23%23%203.5.1%20ldd%E5%91%BD%E4%BB%A4%0A%0Aldd%20%E5%91%BD%E4%BB%A4%E5%8F%AF%E4%BB%A5%E6%9F%A5%E7%9C%8B%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%85%B1%E4%BA%AB%E5%BA%93%E4%BE%9D%E8%B5%96%EF%BC%8C%E7%BB%93%E6%9E%9C%E5%8C%85%E6%8B%AC%E5%BA%93%E7%9A%84%E5%90%8D%E7%A7%B0%E3%80%81%E8%B5%B7%E5%A7%8B%E5%9C%B0%E5%9D%80%E7%AD%89%EF%BC%8C%E8%BF%99%E6%A0%B7%E5%B0%B1%E5%8F%AF%E4%BB%A5%E7%A1%AE%E5%AE%9A%E6%AE%B5%E9%94%99%E8%AF%AF%E5%88%B0%E5%BA%95%E6%98%AF%E5%8F%91%E7%94%9F%E5%9C%A8%E8%87%AA%E5%B7%B1%E5%86%99%E7%9A%84%E7%A8%8B%E5%BA%8F%E4%B8%AD%E8%BF%98%E6%98%AF%E5%87%BA%E7%8E%B0%E5%9C%A8%E5%85%B1%E4%BA%AB%E5%BA%93%E4%B8%AD%E3%80%82%0A%0A%60%60%60%0Aldd%20.%2Ftest%0A%20%20%20%20%20%20%20%20linux-vdso.so.1%20%3D%3E%20%20(0x00007fff7a5f4000)%0A%20%20%20%20%20%20%20%20%2F%24LIB%2Flibonion.so%20%3D%3E%20%2Flib64%2Flibonion.so%20(0x00007ff00455c000)%0A%20%20%20%20%20%20%20%20libc.so.6%20%3D%3E%20%2Flib64%2Flibc.so.6%20(0x00007ff004074000)%0A%20%20%20%20%20%20%20%20libdl.so.2%20%3D%3E%20%2Flib64%2Flibdl.so.2%20(0x00007ff003e70000)%0A%20%20%20%20%20%20%20%20%2Flib64%2Fld-linux-x86-64.so.2%20(0x00007ff004443000)%0A%60%60%60%0A%0A%23%23%23%23%23%203.5.2%20%E6%97%A5%E5%BF%97%0A%0A%E5%85%B6%E5%AE%9E%E6%88%91%E4%BB%AC%E5%9C%A8%E5%86%99%E4%BB%A3%E7%A0%81%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E5%8A%A0%E4%B8%8A%E9%80%82%E5%BD%93%E7%9A%84%E6%97%A5%E5%BF%97%E6%98%AF%E9%9D%9E%E5%B8%B8%E6%9C%89%E5%BF%85%E8%A6%81%E7%9A%84%EF%BC%8C%E8%BF%99%E7%A7%8D%E6%9F%A5%E7%9C%8B%E9%94%99%E8%AF%AF%E7%9A%84%E5%8A%9E%E6%B3%95%E6%98%AF%E6%9C%80%E7%AE%80%E5%8D%95%E9%AB%98%E6%95%88%E7%9A%84%E3%80%82%0A%0A%E4%B8%BA%E4%BA%86%E5%87%8F%E5%B0%91%E4%BB%A3%E7%A0%81%E7%BC%96%E8%AF%91%E5%90%8E%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E6%9D%A1%E4%BB%B6%E7%BC%96%E8%AF%91%E6%8C%87%E4%BB%A4%20%60%23ifdef%20DEBUG%20%E3%80%81%23endif%20%60%E7%AD%89%E6%8A%8A%20print%20%E6%89%93%E5%8D%B0%E5%87%BD%E6%95%B0%E5%8C%85%E8%B5%B7%E6%9D%A5%E3%80%82%E8%BF%99%E6%A0%B7%E5%9C%A8%E7%A8%8B%E5%BA%8F%E7%BC%96%E8%AF%91%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E5%8A%A0%E4%B8%8A%20-DEBUG%20%E5%8F%82%E6%95%B0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%9F%A5%E7%9C%8B%E8%B0%83%E8%AF%95%E4%BF%A1%E6%81%AF%EF%BC%8C%E4%B8%8D%E5%8A%A0%E5%B0%B1%E4%B8%8D%E4%BC%9A%E6%98%BE%E7%A4%BA%E8%B0%83%E8%AF%95%E4%BF%A1%E6%81%AF%E3%80%82%E8%BF%99%E6%A0%B7%E5%81%9A%E5%8F%AF%E4%BB%A5%E5%BF%AB%E9%80%9F%E5%AE%9A%E4%BD%8D%E9%97%AE%E9%A2%98%EF%BC%8C%E4%B9%9F%E8%83%BD%E9%81%BF%E5%85%8D%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E5%A4%A7%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%0A%0A%23%23%204.%20%E8%A7%84%E9%81%BF%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98%0A%0A1.%20%E5%87%BA%E7%8E%B0%E6%AE%B5%E9%94%99%E8%AF%AF%E6%97%B6%EF%BC%8C%E9%A6%96%E5%85%88%E5%BA%94%E8%AF%A5%E6%83%B3%E5%88%B0%E6%AE%B5%E9%94%99%E8%AF%AF%E7%9A%84%E5%AE%9A%E4%B9%89%EF%BC%8C%E4%BB%8E%E5%AE%83%E5%87%BA%E5%8F%91%E8%80%83%E8%99%91%E5%BC%95%E5%8F%91%E9%94%99%E8%AF%AF%E7%9A%84%E5%8E%9F%E5%9B%A0%E3%80%82%0A%0A2.%20%E5%9C%A8%E4%BD%BF%E7%94%A8%E6%8C%87%E9%92%88%E6%97%B6%EF%BC%8C%E5%AE%9A%E4%B9%89%E4%BA%86%E6%8C%87%E9%92%88%E5%90%8E%E8%AE%B0%E5%BE%97%E5%88%9D%E5%A7%8B%E5%8C%96%E6%8C%87%E9%92%88%EF%BC%8C%E5%9C%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E6%97%B6%E5%80%99%E8%AE%B0%E5%BE%97%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BANULL%E3%80%82%0A%0A3.%20%E5%9C%A8%E4%BD%BF%E7%94%A8%E6%95%B0%E7%BB%84%E6%97%B6%EF%BC%8C%E6%B3%A8%E6%84%8F%E6%95%B0%E7%BB%84%E6%98%AF%E5%90%A6%E8%A2%AB%E5%88%9D%E5%A7%8B%E5%8C%96%EF%BC%8C%E6%95%B0%E7%BB%84%E4%B8%8B%E6%A0%87%E6%98%AF%E5%90%A6%E8%B6%8A%E7%95%8C%EF%BC%8C%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E7%AD%89%E3%80%82%0A%0A4.%20%E5%9C%A8%E8%AE%BF%E9%97%AE%E5%8F%98%E9%87%8F%E6%97%B6%EF%BC%8C%E6%B3%A8%E6%84%8F%E5%8F%98%E9%87%8F%E6%89%80%E5%8D%A0%E5%9C%B0%E5%9D%80%E7%A9%BA%E9%97%B4%E6%98%AF%E5%90%A6%E5%B7%B2%E7%BB%8F%E8%A2%AB%E7%A8%8B%E5%BA%8F%E9%87%8A%E6%94%BE%E6%8E%89%E3%80%82%0A%0A5.%20%E5%9C%A8%E5%A4%84%E7%90%86%E5%8F%98%E9%87%8F%E6%97%B6%EF%BC%8C%E6%B3%A8%E6%84%8F%E5%8F%98%E9%87%8F%E7%9A%84%E6%A0%BC%E5%BC%8F%E6%8E%A7%E5%88%B6%E6%98%AF%E5%90%A6%E5%90%88%E7%90%86%E7%AD%89%E3%80%82%0A6.%20%E5%B0%BD%E9%87%8F%E4%B8%8D%E8%A6%81%E5%86%99%E9%80%92%E5%BD%92%E5%87%BD%E6%95%B0%EF%BC%8C%E4%BC%9A%E5%8D%A0%E7%94%A8%E5%A4%A7%E9%87%8F%E7%9A%84%E6%A0%88%E7%A9%BA%E9%97%B4%E3%80%82%0A%0A