如何使用gdb确定核心文件中pthread_raise(sig=6)的原因
How to determine reason of pthread_raise(sig=6) in core file with gdb
我的应用程序有时会崩溃,但我找不到原因。我的应用程序是多线程 (QThread) 并使用多个 QUdpSockets。我认为这是由于同时访问套接字而发生的,但我不知道何时何地。
核心文件有bt的结果:
#0 0x414596e1 in ?? ()
#1 0x412d731b in pthread_kill (thread=1649, signo=6) at signals.c:69
#2 0x412d76a0 in __pthread_raise (sig=6) at signals.c:200
#3 0x41459395 in ?? ()
#4 0x00000006 in ?? ()
#5 0x41546ff4 in ?? ()
#6 0xbd5fd8bc in ?? ()
#7 0x4145a87d in ?? ()
#8 0x00000006 in ?? ()
#9 0x00000020 in ?? ()
#10 0x00000000 in ?? ()
- 什么是 sig=6 以及它是什么时候发出的?
- 如何确定此行为的原因?
- 我如何知道缺少哪些 -dev 库(??? 堆栈位置)?
Linux 上的信号编号 6 是 SIGABRT
- 它与 pthread_raise()
一起引发的事实似乎表明应用程序已直接调用 abort()
或失败assert()
.
很可能您的回溯缺失部分在 QT 库中,因此请尝试为所有这些安装调试符号。
我的应用程序有时会崩溃,但我找不到原因。我的应用程序是多线程 (QThread) 并使用多个 QUdpSockets。我认为这是由于同时访问套接字而发生的,但我不知道何时何地。
核心文件有bt的结果:
#0 0x414596e1 in ?? ()
#1 0x412d731b in pthread_kill (thread=1649, signo=6) at signals.c:69
#2 0x412d76a0 in __pthread_raise (sig=6) at signals.c:200
#3 0x41459395 in ?? ()
#4 0x00000006 in ?? ()
#5 0x41546ff4 in ?? ()
#6 0xbd5fd8bc in ?? ()
#7 0x4145a87d in ?? ()
#8 0x00000006 in ?? ()
#9 0x00000020 in ?? ()
#10 0x00000000 in ?? ()
- 什么是 sig=6 以及它是什么时候发出的?
- 如何确定此行为的原因?
- 我如何知道缺少哪些 -dev 库(??? 堆栈位置)?
Linux 上的信号编号 6 是 SIGABRT
- 它与 pthread_raise()
一起引发的事实似乎表明应用程序已直接调用 abort()
或失败assert()
.
很可能您的回溯缺失部分在 QT 库中,因此请尝试为所有这些安装调试符号。