: O$ l- k; b! { w妖城在线论坛The problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files妖城在线论坛" @- Q: C, Q F) N% x! H
Linux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。妖城在线论坛% M3 }# V8 F4 h( F; [4 y% c9 O
检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:; ^8 z- S: ^8 ~8 X( v2 I
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
# K. w& s( ~: [; z! A魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表ulimit -c unlimited(不限 core 文件尺寸)
9 V0 F! G7 Y, u/ M* p; Q$ D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート附:用 gdb 根据 core dump 文件定位错误的办法。魔力私服,最新魔力宝贝私服技术交流' M! S0 Z) `$ c v( h/ Y+ U/ `" j
用这个程序作一个测试:bbs.mocwww.com( }8 p1 [' h- j' t7 M
int foo (int *p)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 L# |/ G. b/ Q& v
{魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& }1 u& @$ G2 ~7 k: X3 _- ~
return *p;魔力私服,最新魔力宝贝私服技术交流0 a9 G0 c! ?( J$ {% q6 [% Y0 S
}
. e, _4 y+ G. i/ N4 ]* @* l魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表main()魔力私服,最新魔力宝贝私服技术交流% \2 i4 G# F- m5 s
{魔力私服,最新魔力宝贝私服技术交流8 K b' n4 {0 ]& @6 U9 }
foo (0);
2 g& s0 _% f$ X0 N: ~$ E9 A魔力私服,最新魔力宝贝私服技术交流}—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ y2 O. f" a* p# z
derek@dli: /tmp $ gcc -g a.c魔力私服,最新魔力宝贝私服技术交流* h" |6 t& m' m& }# ?% C
derek@dli: /tmp $ ./a.out魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ L% G3 `1 O/ i+ h6 V
段错误 (core dumped)
5 F/ v, n: Y2 s3 H8 d `1 i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートderek@dli: /tmp $ gdb ./a.out -c core8 C n0 Q$ G+ A5 c( C' ^
(这里略去约十行其他信息)
$ C- t0 O5 |) F% M0 T魔力私服,最新魔力宝贝私服技术交流Core was generated by `./a.out'.妖城在线论坛: b9 J/ O* w1 x- U3 J# W) {
Program terminated with signal 11, Segmentation fault.魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 b% O8 W2 i" M7 s! z& N. a9 S7 c
#0 0x0804834a in foo (p=0x0) at a.c:3
% a& i u* y/ G- ubbs.mocwww.com3 return *p;
* v4 v" b- z4 B/ H% f妖城在线论坛如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:bbs.mocwww.com8 s2 t9 E8 c) y6 @
(gdb) bt
/ }" i" p0 V. a1 m+ M9 D#0 0x0804834a in foo (p=0x0) at a.c:3
( n# p1 q# t6 W& _+ N+ G魔力私服,最新魔力宝贝私服技术交流#1 0x0804836b in main () at a.c:8妖城在线论坛- L9 t; H4 s7 N _; ~& ^
不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。; X/ p. B: \% w3 n5 m) ], n
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 G1 U% L) ~" m4 H4 J) G
百度知道摘的有关段错误的解释
5 Y$ n ^# X8 T9 M5 d5 F* ~# U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート参考一下便于理解妖城在线论坛; i: P; p% s) V, D5 b
至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧
% |) c/ f* T3 s2 P% O7 }/ Z' {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート