" k% n o8 k+ o) b0 Sbbs.mocwww.comThe problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files! C7 V' e* |; |( G- D, T2 _
Linux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。
1 `# S' T# }/ Y$ P7 j, r6 L) ~妖城在线论坛检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:2 \, z/ Z `/ Y: i
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
1 v) s) B* o6 V2 l$ L" i2 k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表ulimit -c unlimited(不限 core 文件尺寸)
4 {$ P8 j- b/ M+ P: r) X Z附:用 gdb 根据 core dump 文件定位错误的办法。
8 B l$ ]' h1 ?! ^& w3 k) c2 ubbs.mocwww.com用这个程序作一个测试:
! Y. e3 Y. L! Pbbs.mocwww.comint foo (int *p)妖城在线论坛; g2 I( @$ r7 y
{7 H, u' }( n5 V# c6 o O' ^& B
return *p;
: D6 g. T) Y- {3 S7 L& Z# o魔力私服,最新魔力宝贝私服技术交流}
/ b7 v6 W% V* f# }9 smain()
* F* k8 |+ z: {; \bbs.mocwww.com{; ^7 x! z1 s2 U
foo (0);魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) [0 b; [+ K" _8 ?
}魔力私服,最新魔力宝贝私服技术交流 C* Q+ P7 q8 H7 c9 t' o
derek@dli: /tmp $ gcc -g a.c魔力私服,最新魔力宝贝私服技术交流9 [3 B3 i: y8 J. q U# p; q
derek@dli: /tmp $ ./a.out
9 {3 H$ E3 m" b6 o% @魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表段错误 (core dumped)妖城在线论坛& U$ w% ^: J" ~& p, F' l+ w# r- t0 u
derek@dli: /tmp $ gdb ./a.out -c core
; |8 ?$ B! r) ~+ ]4 @. Kbbs.mocwww.com(这里略去约十行其他信息)0 c7 t% q: s8 c! D7 J
Core was generated by `./a.out'.
5 N. L, q+ Y$ q) }3 [' p/ e% H9 X( B! @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートProgram terminated with signal 11, Segmentation fault.魔力私服,最新魔力宝贝私服技术交流5 W; e: I/ n% q2 X+ [2 K1 g% V& v
#0 0x0804834a in foo (p=0x0) at a.c:3
, v' h$ h' X" x# wbbs.mocwww.com3 return *p;
0 R3 C1 p3 R+ s& M$ F1 Y$ H/ t( @魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:妖城在线论坛; x. ?- p' B9 \" T) d# s; [
(gdb) bt1 l7 ~6 C% @. K
#0 0x0804834a in foo (p=0x0) at a.c:3
+ ~* v7 }/ D8 _# T+ X4 b#1 0x0804836b in main () at a.c:8
' ?) \. [2 j" ^* F% v+ c妖城在线论坛不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。bbs.mocwww.com, m& B8 x4 P6 C* H b `
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# N2 p) y% d) c/ v, ?- S+ @
百度知道摘的有关段错误的解释
( {& M3 g, ^( j" h& `( Lbbs.mocwww.com参考一下便于理解
) ~+ U4 Y# A" Z9 t8 H: Z7 C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧魔力私服,最新魔力宝贝私服技术交流* o/ _, l8 e% E8 d+ r5 q- k( a( t