: ]( O5 ^- ^9 u9 P0 x. y
The problem that no `core' file is created on a segmentation fault; Locate errors in the source with GDB and `core' files魔力私服,最新魔力宝贝私服技术交流8 u* m$ J: S. {& G4 V
Linux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 RedHat Enterprise Linux)觉得这样非常方便查错,但我自己用的 Debian GNU/Linux 却默认不生成这个文件。
( h3 H3 _# Y8 Z1 ]9 E. H魔力私服,最新魔力宝贝私服技术交流检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:
# [0 g7 m% ]- b% e; ?9 S魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1MiB)bbs.mocwww.com0 v; v, r" U2 `& I* @4 m) s/ G9 r
ulimit -c unlimited(不限 core 文件尺寸)3 A: v0 \8 H1 n/ ~: D. Y0 S
附:用 gdb 根据 core dump 文件定位错误的办法。
, P) j* S; |. J4 |, ?5 B5 c7 b8 P2 w魔力私服,最新魔力宝贝私服技术交流用这个程序作一个测试:bbs.mocwww.com6 p* c! [+ K _' \* I. ]1 Z6 I1 r/ R# F
int foo (int *p)- D2 M5 i: \2 s$ M
{
{% D: z/ |# V, z" l# s% E魔力私服,最新魔力宝贝私服技术交流return *p;
5 Q0 f# J7 @: ]) ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表}—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 F M" G( ^; W. c* W3 y! k, p
main()魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) y) _4 w, _. O
{2 b) l/ V" n1 c0 Y' N+ o+ r
foo (0);魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! j7 f3 @% g( A* T" p+ o# F3 T
}魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 }. Y! }1 `$ s* E6 i, a: p
derek@dli: /tmp $ gcc -g a.c
$ G" U" g& V* l: C2 |, R/ ]bbs.mocwww.comderek@dli: /tmp $ ./a.out魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* P/ _( Z5 W; }1 X- c
段错误 (core dumped)
. \% P$ R! H" d# T- T8 I妖城在线论坛derek@dli: /tmp $ gdb ./a.out -c core魔力私服,最新魔力宝贝私服技术交流/ W+ P0 U) @' h; {3 K
(这里略去约十行其他信息)
& P8 l# C8 F: A$ g—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCore was generated by `./a.out'.
# P8 y. x) ]/ w4 h( b! l7 }* }妖城在线论坛Program terminated with signal 11, Segmentation fault.0 U* H% P+ B. E a* i/ L" }
#0 0x0804834a in foo (p=0x0) at a.c:3
: ?1 G8 O: w- A5 q8 ^. I. w妖城在线论坛3 return *p;妖城在线论坛4 f* r* t! k& L3 M4 O
如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( K ]( D' o8 t2 v1 T
(gdb) bt+ d! e3 X9 [# A9 ^8 P# Q' k7 M
#0 0x0804834a in foo (p=0x0) at a.c:3
' Y1 U$ M: M1 \# V) [- J#1 0x0804836b in main () at a.c:8魔力私服,最新魔力宝贝私服技术交流& d. q. a* p- }, X$ ?, U5 K
不能有比这更清楚的错误信息了!如果是在 Windows 下,就老老实实 Trace and Step 吧。
' Y- e y9 B/ d6 i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
( z/ P% H* e, ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表百度知道摘的有关段错误的解释魔力私服,最新魔力宝贝私服技术交流' s" ~9 B+ P% l4 K
参考一下便于理解
4 T; B6 W( T% S& f! B" d: @bbs.mocwww.com至于出错的原因 最好贴更多的信息 上面应该还有其他错误提示才对吧& u# H) ~- d% ]8 g. N