! O: c5 }7 o Y9 V+ R- vThe problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files
# j3 N$ W0 k7 N) u8 @$ {( hLinux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。妖城在线论坛: S# Z7 \4 G! G7 x5 z
检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:
" D: w4 H' ~2 b& T3 {1 C8 q魔力私服,最新魔力宝贝私服技术交流ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
: e+ V6 r$ \% f3 b& |- O* T( N—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートulimit -c unlimited(不限 core 文件尺寸)
2 T, q% z! c1 v; n5 [, e" wbbs.mocwww.com附:用 gdb 根据 core dump 文件定位错误的办法。—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' X+ \! Q, ^. p0 n8 h% N
用这个程序作一个测试:
7 r- g" h- C0 L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートint foo (int *p)bbs.mocwww.com" ?* a& O9 G( W9 ^( ?2 j. m% T
{bbs.mocwww.com' B. f- z0 U: n, S! s3 X/ B
return *p;
4 c6 T" O/ @7 j* G" \8 N}
1 \, [0 ^5 c& v/ L' o1 E! }* Q, y& jbbs.mocwww.commain()
9 ?$ j# s+ h, }- B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート{妖城在线论坛: K+ @; J- n! r! N6 e0 ]) G5 A' i
foo (0);
: O* u5 t) g3 |& s4 ~' N v}
- B+ \# s( b3 O2 [. wbbs.mocwww.comderek@dli: /tmp $ gcc -g a.c
+ T% @6 v' k! ^% V$ L魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表derek@dli: /tmp $ ./a.out魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% f# J7 Z4 ^0 Q* [# g
段错误 (core dumped)
; g. r- A1 q8 z# Q! C( y9 [; j魔力私服,最新魔力宝贝私服技术交流derek@dli: /tmp $ gdb ./a.out -c core魔力私服,最新魔力宝贝私服技术交流3 Y. T2 S1 ?- u
(这里略去约十行其他信息)
* e% }; q7 v SCore was generated by `./a.out'.—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 c2 Q% n, g! h$ E; `- W- S
Program terminated with signal 11, Segmentation fault.
% c( O T6 A1 w9 v1 X, S; F魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表#0 0x0804834a in foo (p=0x0) at a.c:3
- h3 f9 K1 g7 B! l4 C$ K8 p魔力私服,最新魔力宝贝私服技术交流3 return *p;
$ T6 t! n/ k- qbbs.mocwww.com如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:
+ @: h- _, C7 G妖城在线论坛(gdb) bt
! N' J+ q! ^+ F- ~! F魔力私服,最新魔力宝贝私服技术交流#0 0x0804834a in foo (p=0x0) at a.c:3魔力私服,最新魔力宝贝私服技术交流9 A3 @: S- K! N' B
#1 0x0804836b in main () at a.c:8
b R ] Q& y: i; p) c1 ^% s魔力私服,最新魔力宝贝私服技术交流不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。
' X7 W9 ?3 @' {" D, L% T—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
6 C4 H* f# u' L8 r! x, {5 M/ Dbbs.mocwww.com百度知道摘的有关段错误的解释—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 V1 ?6 z9 b- ^
参考一下便于理解bbs.mocwww.com0 J% E3 p4 X* m
至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧
# D& m# g, ^2 d" N* A妖城在线论坛