9 ~8 h" c7 a# x( U: L+ f7 N. T妖城在线论坛The problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files
z% y$ b: J7 Y" R4 L) E ]妖城在线论坛Linux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。魔力私服,最新魔力宝贝私服技术交流+ g1 f2 {3 ]/ `! i' P
检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:妖城在线论坛% u% |3 o$ @" X- d) i' Q+ D4 [
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)
1 [3 ]4 O* k; O R/ ]3 Lulimit -c unlimited(不限 core 文件尺寸)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ l9 g8 B5 r' u) h! O. m+ R0 F
附:用 gdb 根据 core dump 文件定位错误的办法。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 p3 S9 K) S$ r" g3 R* a& B! q; j9 x
用这个程序作一个测试:
3 e' S( v% I4 Abbs.mocwww.comint foo (int *p)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 o8 u5 F& M# i# N
{
( e* ~" u: m4 p5 a1 Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表return *p;妖城在线论坛2 x6 @6 X0 ^; C3 {
}' l, o5 g' O! ^" S. F: ^, X
main()魔力私服,最新魔力宝贝私服技术交流# D: J, @% M1 t4 c" h. g
{
& c8 o* t2 y; R5 Q1 u魔力私服,最新魔力宝贝私服技术交流foo (0);魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 w0 `% A+ V; Q3 M* ?" o% N6 A
}8 O7 j. q( g& F" E( d0 v
derek@dli: /tmp $ gcc -g a.c魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% {7 ~# M4 T7 w7 ^. l# K; `- P
derek@dli: /tmp $ ./a.out& r7 @# l! y. a# E; r* [1 u
段错误 (core dumped)魔力私服,最新魔力宝贝私服技术交流) r9 B% L5 r1 \/ U% A3 i
derek@dli: /tmp $ gdb ./a.out -c core, a4 x+ r0 S+ q& ?6 |
(这里略去约十行其他信息)
( d! W; L, z$ a; c6 H+ x- l魔力私服,最新魔力宝贝私服技术交流Core was generated by `./a.out'.魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 l. f/ K1 ~- e! f1 |' H
Program terminated with signal 11, Segmentation fault.
. w6 s; d5 { M( A2 N—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート#0 0x0804834a in foo (p=0x0) at a.c:3—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート Y6 `% Z% |- F; [6 m
3 return *p;
0 L( `) r9 V) k3 F' Q6 Y0 A魔力私服,最新魔力宝贝私服技术交流如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:
6 L( j( r4 }3 }7 a5 o: ]4 T( I妖城在线论坛(gdb) bt
: a2 {8 z; L+ s# t+ i魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表#0 0x0804834a in foo (p=0x0) at a.c:3bbs.mocwww.com/ B6 L9 x; n8 x
#1 0x0804836b in main () at a.c:8
: s1 {; T2 P" v0 d( ~& ^, }9 c0 a不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。3 n) t" ~# S3 V* K# t
$ d# i3 A4 _5 a6 n) ~9 t+ ubbs.mocwww.com百度知道摘的有关段错误的解释魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ O3 V. Q/ ^ |( q( Y2 g& C
参考一下便于理解
# ]+ {, `: ?: l1 X妖城在线论坛至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧
6 M9 P* m8 [7 Y+ b# T0 }妖城在线论坛