# t9 I: M6 O5 |
The problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files
5 h/ E8 c% f7 }) s—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートLinux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。
( r4 i/ w- h" C4 ubbs.mocwww.com检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:魔力私服,最新魔力宝贝私服技术交流6 ^2 ~/ w# `% D' v
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
7 S5 }/ j0 z; ]8 H6 I6 @+ p—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートulimit -c unlimited(不限 core 文件尺寸)魔力私服,最新魔力宝贝私服技术交流 a3 H' S3 i7 m) z" ^" R0 q' Y
附:用 gdb 根据 core dump 文件定位错误的办法。
8 `/ U& w9 O0 y0 n2 p# F) R o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート用这个程序作一个测试:—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" F/ N- n& A' q# x6 z
int foo (int *p)
! x7 P' O) }: r4 W- ?4 {! m0 _魔力私服,最新魔力宝贝私服技术交流{
3 x0 [* x- A6 c* d4 h; s—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートreturn *p;
; L# h/ }! T% S9 Y5 d1 a( c P妖城在线论坛}魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 I- b5 K( K, N8 [ s) K
main()妖城在线论坛8 h% M) W% E+ R3 j) ?% O" Q
{妖城在线论坛" Q: F g3 F3 `5 k6 F& W
foo (0);bbs.mocwww.com; ~- H% e7 {0 x5 V
}bbs.mocwww.com1 r% L/ X: J+ y1 `6 w
derek@dli: /tmp $ gcc -g a.cbbs.mocwww.com$ c7 I; X# y2 ]
derek@dli: /tmp $ ./a.out—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 m! i8 j- D5 [2 E
段错误 (core dumped)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# _4 A t2 Y* n3 I( B' u
derek@dli: /tmp $ gdb ./a.out -c core3 W! g, ~' U {. T% g# F' j
(这里略去约十行其他信息)魔力私服,最新魔力宝贝私服技术交流* ]( |2 \0 i j, t/ ~8 ?
Core was generated by `./a.out'.
4 y! f* f0 {+ [" G2 @7 F. B/ R, [! C—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートProgram terminated with signal 11, Segmentation fault.
/ d" w$ z( A6 @0 I+ i#0 0x0804834a in foo (p=0x0) at a.c:3魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! Y4 W7 C( |3 ~- D
3 return *p;—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, {( f8 C4 {, P3 G3 U0 U2 B
如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, {) i9 G, H( {9 N, c# F
(gdb) bt
, R$ Q9 [9 k' M. d% \4 G—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート#0 0x0804834a in foo (p=0x0) at a.c:3
6 W( }1 t$ y2 q; c: W1 a' y0 C#1 0x0804836b in main () at a.c:8
/ i6 O6 j; V, t/ p5 kbbs.mocwww.com不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。
1 x' A% J( R/ D/ Y- h5 r9 B) n1 q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) D+ U( X, U; C* D" j, K6 _0 l
百度知道摘的有关段错误的解释—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 d( X/ C! j5 o! a7 l, B
参考一下便于理解
+ t( t3 |) ^# W5 v9 W; Y% R魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧1 [& }/ V: J y% }6 W @% l$ k Z