; R3 S9 y8 P/ t2 C- ]4 m妖城在线论坛The problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files
7 f+ ?' g! Q& ]4 J2 z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートLinux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, V7 K1 @& ^8 n& `! \1 N+ _
检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 z- V. j& D1 V. K3 r
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
: M* L: ?7 `( X1 Z2 L: Q2 D妖城在线论坛ulimit -c unlimited(不限 core 文件尺寸)
4 V r3 F' d( d1 G' y) v$ W妖城在线论坛附:用 gdb 根据 core dump 文件定位错误的办法。
! C* i0 t. s! }# D5 ~ }. Xbbs.mocwww.com用这个程序作一个测试:bbs.mocwww.com, ^0 G3 `, B% X' T. K' `9 v
int foo (int *p)
6 @) D% c0 ^* \. `3 e" ^5 A/ W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表{魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% b) J+ s) M2 q; l
return *p;bbs.mocwww.com7 C1 _4 Z3 O d9 s8 |
}( J' J7 z1 ]* u) ^& B
main()bbs.mocwww.com1 n3 x' q0 B4 I3 o4 T, l
{魔力私服,最新魔力宝贝私服技术交流+ J9 v+ ^" C+ B, g) B6 c
foo (0);魔力私服,最新魔力宝贝私服技术交流9 V1 [. q" a- p/ w
}; [( V' t: u2 y/ Y2 q; q+ ^$ U
derek@dli: /tmp $ gcc -g a.c
5 t' _/ K: I6 b! H5 n—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートderek@dli: /tmp $ ./a.out/ k- |+ I/ ]; ?7 x! }
段错误 (core dumped)魔力私服,最新魔力宝贝私服技术交流# X3 n0 a+ {4 @: z8 B7 r# p) o
derek@dli: /tmp $ gdb ./a.out -c core魔力私服,最新魔力宝贝私服技术交流" p. U; k1 {$ Y3 s1 w, b
(这里略去约十行其他信息)妖城在线论坛, W% x, Q' G/ v* V) u( U
Core was generated by `./a.out'.
1 k: N, K$ }' }bbs.mocwww.comProgram terminated with signal 11, Segmentation fault.- a# R8 t# I( A2 r! N8 L$ V
#0 0x0804834a in foo (p=0x0) at a.c:3
; n& P1 A+ ^+ v% H6 d. m3 return *p;
T1 p# n1 k2 H9 \$ O7 P; z妖城在线论坛如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 K# \! C0 a' c9 |# |: Z
(gdb) bt魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& ]8 w; [% o: ^* k
#0 0x0804834a in foo (p=0x0) at a.c:3
% h. @6 E; h% [# E魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表#1 0x0804836b in main () at a.c:8—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 b6 H) x# \& S0 c1 W v
不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。妖城在线论坛9 ]/ R2 U) j- }- _
6 ~0 e |5 j0 Z1 e' M- K. N2 K" i$ X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート百度知道摘的有关段错误的解释魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 ]- H' L' l% d
参考一下便于理解
! u0 p* J/ ^9 T+ b5 t0 X% l. y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧
& T1 p9 f; o* u妖城在线论坛