示例代码对我来说运行良好。发布你的完整代码?或者将您的示例减少到尽可能少,但仍然会重现问题。并在核心“gdb -c a.core a.out”上运行 gdb 并获取回溯(bt)。
本地时间的一个问题是返回的指针是指向静态全局变量的指针,并且对本地时间的后续调用会更新该变量。很久很久以前就曾绊倒过我一次。
struct tm *localtime(const time_t *time)
返回值是指向静态分解时间结构的指针,该结构可能会被对任何日期和时间函数的后续调用所覆盖。 (但没有其他库函数会覆盖该对象的内容。)
From:
http://www.chemie.fu-berlin.de/chemnet/use/info/libc/libc_17.html http://www.chemie.fu-berlin.de/chemnet/use/info/libc/libc_17.html
关于搜索核心文件:
也可以看看核心转储 - 但核心文件不在当前目录中? https://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is-not-in-current-directory
确保系统可以写入核心文件。
* 对我来说,在 ununtu 系统的一个示例中 ulimit -c 显示 0 *
ulimit -c unlimited
检查使用的模式并将该模式更改为简单的一个或不同的位置。
cat /proc/sys/kernel/core_pattern
#sysctl -w kernel.core_pattern=core
搜索一些常见位置并查看 /var/log/messages:
ls /var/crash /var/cache/abrt /var/spool/abrt/ /tmp/*core*
tail /var/log/messages
在 ubuntu 上检查 apport 服务配置和 init/rcfiles:
find /etc/ |grep appo