原帖由 flw 于 2007-3-26 15:11 发表
gdb 之~
然后 bt
或者 ltrace 也行。
原帖由 源方 于 2007-3-26 15:25 发表
怎么用?大概说说呗。没用过ltrace
glibc
*
红帽企业 Linux 4 提供的 glibc 可以执行附加的内部数据健全检查,从而在尽可能早的时候发现和保护数据被破坏。在默认的情况下,当被破坏的数据被发现时,与以下相似的错误信息会被显示在标准的错误输出上(如果 stderr 没有打开,会被记录在 syslog 中):
*** glibc detected *** double free or corruption: 0x0937d008 ***
在默认的情况下,产生这个错误的程序也会被中止。但是,这(以及是否产生错误信息)可以通过环境变量 MALLOC_CHECK_ 来控制。以下的设置是被支持的:
0 — 不产生错误信息,也不中止这个程序
1 — 产生错误信息,但是不中止这个程序
2 — 不产生错误信息,但是中止这个程序
3 — 产生错误信息,并中止这个程序
备注
如果 MALLOC_CHECK_ 被设置为除 0 以外的值,这会使 glibc 进行更多的检查并可能影响到系统的性能。
如果您的由第三方 ISV 提供的程序会引发这些数据破坏检查并显示错误信息,您应该向这个程序的提供者提交一个错误报告,因为它代表了一个严重的错误。
原帖由 源方 于 2007-3-26 15:56 发表
谢谢楼上的。我的程序还会提示Segmentation fault ,段错误
原帖由 源方 于 2007-3-26 15:56 发表
谢谢楼上的。我的程序还会提示Segmentation fault ,段错误
原帖由 源方 于 2007-3-26 15:56 发表
谢谢楼上的。我的程序还会提示Segmentation fault ,段错误
原帖由 gnap 于 2007-3-26 16:01 发表
继续用gdb跟踪。
原帖由 antzcn 于 2007-3-26 15:56 发表
复制代码
- #include <stdio.h>
- int main(void)
- {
- FILE *fs;
- fs=fopen("./test", "w");
- fclose(fs);
- fclose(fs);
- }
[root@localhost tmp]# gcc g.c
[root@lo ...
原帖由 源方 于 2007-3-26 16:08 发表
没看懂。Aborted也没说在哪一行。我的程序打日志时还提示Segmentation fault 。我没什么办法了
你告诉我该做什么我自己研究吧
原帖由 antzcn 于 2007-3-26 16:10 发表
把代码贴出来吧~!
原帖由 源方 于 2007-3-26 16:15 发表
谢谢。代码太多了。没法贴出来
我的运行环境(简化的slackware)里没有gdb。我从别的机器copy一个试一试
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |