0 \- ~4 C* [ [7 J) ^" `: F% e魔力私服,最新魔力宝贝私服技术交流The problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files
% A8 k5 y4 S* w3 F' N5 k$ P( \魔力私服,最新魔力宝贝私服技术交流Linux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。bbs.mocwww.com3 H6 H6 q: n1 r3 w7 ^* b( `
检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:bbs.mocwww.com/ p8 r7 i; d( H3 c
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
: g, u$ W. W, X, J" u* d魔力私服,最新魔力宝贝私服技术交流ulimit -c unlimited(不限 core 文件尺寸)bbs.mocwww.com: y4 k: V+ b, [- e6 x$ {# k
附:用 gdb 根据 core dump 文件定位错误的办法。
" i$ V( |& l' L# z, B$ O魔力私服,最新魔力宝贝私服技术交流用这个程序作一个测试:
% _ h+ s/ `, g; }7 ~. lbbs.mocwww.comint foo (int *p)
% D7 ]! O6 U5 k妖城在线论坛{bbs.mocwww.com, l1 d" H) N/ L/ }0 l) y# V
return *p;
# u/ `3 M g. N6 [魔力私服,最新魔力宝贝私服技术交流}
7 b0 `* n+ C1 x6 ]. Y5 d: J妖城在线论坛main()—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 @* w. K$ @4 k5 c! K
{妖城在线论坛- i/ R0 v& @2 _! W1 m, G+ F& b Y) i) V
foo (0);
8 R& g! _" X$ {! ?$ Y( [7 i+ a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート}魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ j2 ?2 X4 p# k1 p6 _
derek@dli: /tmp $ gcc -g a.c
5 k* Q8 ?, d1 q% }4 v" ]9 j魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表derek@dli: /tmp $ ./a.out9 _. ^! y r0 O. K
段错误 (core dumped)
% [9 p0 k( Q6 s" g魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表derek@dli: /tmp $ gdb ./a.out -c core魔力私服,最新魔力宝贝私服技术交流/ j" x7 [3 ^& j* _
(这里略去约十行其他信息)
0 j+ Q& U, W0 J `1 K! n7 Tbbs.mocwww.comCore was generated by `./a.out'.
2 d. \* i; B6 c$ obbs.mocwww.comProgram terminated with signal 11, Segmentation fault.—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 |+ [" g/ ~3 L
#0 0x0804834a in foo (p=0x0) at a.c:3
( M) [& I9 h9 K+ G9 m妖城在线论坛3 return *p;魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 s3 ~$ j. `, x8 c3 a T S* o1 N
如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:; f: j- v% W6 G: S7 W
(gdb) bt魔力私服,最新魔力宝贝私服技术交流5 J( q1 ~5 J+ v0 u
#0 0x0804834a in foo (p=0x0) at a.c:3bbs.mocwww.com! v+ c' N8 h: O* H% x" e
#1 0x0804836b in main () at a.c:8—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ C5 n( j; s- G0 z- Q# e
不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。魔力私服,最新魔力宝贝私服技术交流5 c6 H: n; k5 _5 `
妖城在线论坛" n) O9 T H, y- S8 `5 b- P
百度知道摘的有关段错误的解释bbs.mocwww.com- J# o0 r; [5 `+ {8 B" F' w
参考一下便于理解9 m' Z; O6 k' ^0 c8 l- n7 p
至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧
) Q: X* u; U7 g8 R妖城在线论坛