我有手臂上的程序,有时会崩溃。
我经常学习,但我不知道该怎么做。
程序崩溃时会生成coredump文件。如果我用二进制运行coredump,backtrace写道:
Core was generated by `./myprog -s -d 731'.
Program terminated with signal 11, Segmentation fault.
#0 0x410987e8 in ?? () from /lib/libc.so.6
(gdb) bt
#0 0x410987e8 in ?? () from /lib/libc.so.6
#1 0x41098758 in ?? () from /lib/libc.so.6
#2 0x41098758 in ?? () from /lib/libc.so.6
#3 0x41098758 in ?? () from /lib/libc.so.6
#4 0x41098758 in ?? () from /lib/libc.so.6
and so on same lines......
当我修改这个程序并再次编译/运行时,他崩溃了另一个lib(libQtGuiE.so)并且堆栈已满了libQtGuiE.so 一段时间gdb写" Backtrace停止了:前一帧内部到这个帧(腐败堆栈?)"
奇怪的是我在这个程序中使用了4个线程,而gdb写了这个:
(gdb) info threads
4 Thread 820 0x00000000 in ?? ()
3 Thread 838 0x00000000 in ?? ()
2 Thread 835 0x00000000 in ?? ()
* 1 Thread 836 0x410987e8 in ?? () from /lib/libc.so.6
所以我认为这意味着重写了线程堆栈?我使用Qt4 - 所以线程是由qthread创建的。
程序不会崩溃很多 - >每天一次。
你能告诉我该怎么做吗?