bbs.mocwww.com Z$ e7 H/ k2 |! |, H" J
The problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files
# m- M* t' S) [6 g( z% h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートLinux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。妖城在线论坛" _" O( {. v3 ^8 h6 g' H7 K3 w
检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:妖城在线论坛" [; W8 \6 G6 U( P# \
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
3 E$ w# t4 ^( ~& X2 U% p9 Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表ulimit -c unlimited(不限 core 文件尺寸)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& q. ~, E+ G; j1 l: y4 x4 Q
附:用 gdb 根据 core dump 文件定位错误的办法。妖城在线论坛 D+ J( `; G0 Z1 t) H; Q
用这个程序作一个测试:魔力私服,最新魔力宝贝私服技术交流; y0 P" x$ e+ J5 U7 j
int foo (int *p)bbs.mocwww.com7 y8 \2 ?8 B; S
{
: o3 ^" t* n/ s$ ?7 R! @6 b& k" v妖城在线论坛return *p;
, ^1 d8 P8 n/ k4 X( P魔力私服,最新魔力宝贝私服技术交流}—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) p3 t. E! q7 @8 x5 P% ?
main()
+ z% _: i" A. D魔力私服,最新魔力宝贝私服技术交流{妖城在线论坛8 G6 v( p8 j6 q6 J
foo (0);魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# ~0 o' w& O6 k
}
_2 v/ \. g4 D# ]9 s' O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表derek@dli: /tmp $ gcc -g a.c魔力私服,最新魔力宝贝私服技术交流3 Q. B; ~7 i7 Z
derek@dli: /tmp $ ./a.outbbs.mocwww.com7 _. @5 k& D" e
段错误 (core dumped)
0 G0 {4 N; j; k) W0 C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表derek@dli: /tmp $ gdb ./a.out -c core魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 S* I' X5 ^1 n4 \/ e
(这里略去约十行其他信息)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" r3 Z+ X2 H- M
Core was generated by `./a.out'.
$ \/ M; e6 b' w( WProgram terminated with signal 11, Segmentation fault.bbs.mocwww.com7 F" [9 J1 [' M8 O* ^ [
#0 0x0804834a in foo (p=0x0) at a.c:3
# R8 \$ a" z8 G. ~, k& b" a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 return *p;
/ G! E2 p/ e* b0 s. S0 q4 R' U7 m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:
l1 ?$ H5 p+ z- B F8 E/ f3 G* F妖城在线论坛(gdb) bt
, K! z. y9 T" Y) Z' W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート#0 0x0804834a in foo (p=0x0) at a.c:3bbs.mocwww.com+ D8 j& i& _3 [6 r' w
#1 0x0804836b in main () at a.c:8
% V# Y* j+ i5 O5 J2 Wbbs.mocwww.com不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。; k5 U# p# ]$ y! m' Y" m& S$ \
# |$ I. n |2 T1 {1 l8 x+ W/ G妖城在线论坛百度知道摘的有关段错误的解释魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- E7 ]* u, P) a9 z9 }/ [5 i& M* `0 _
参考一下便于理解
# Z/ C, Q4 p# G1 L3 C妖城在线论坛至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧
! W$ O' m' T D/ `' ~4 I6 C- o k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表