当它给出具有以下输出的回溯时它意味着什么?
#0 0x00000008009c991c in pthread_testcancel () from /lib/libpthread.so.2 #1 0x00000008009b8120 in sigaction () from /lib/libpthread.so.2 #2 0x00000008009c211a in pthread_mutexattr_init () from /lib/libpthread.so.2 #3 0x0000000000000000 in ?? ()
该程序已经与标准信号11一起崩溃,分段故障.我的应用程序是一个在FreeBSD 6.3上运行的多线程FastCGI C++程序,使用pthread作为线程库.
根据信息来源,它已使用-g编译,并且我的源的所有符号表都已加载.
很明显,我的实际代码都没有出现在跟踪中,而是错误似乎来自标准的pthread库.特别是什么?()????
编辑:最终在我的主代码中跟踪崩溃到标准的无效内存访问.不解释为什么堆栈跟踪已损坏,但这是另一天的问题:)
gdb无法从pthread_mutexattr_init中提取正确的返回地址; 它的地址为0."??" 是在符号表中查找地址0的结果.它找不到符号名称,因此它打印默认的"??"
不幸的是,我不知道为什么它无法提取正确的返回地址.
你做的事情导致线程库崩溃.由于线程库本身未使用调试符号(-g)进行编译,因此无法显示发生崩溃的源代码文件或行号.此外,由于它是线程,因此调用堆栈不会指向您的文件.不幸的是,这将是一个难以追踪的错误,你需要逐步完成代码并尝试缩小发生崩溃的时间.