Linux 识别多线程程序中的崩溃-如何?

Linux 识别多线程程序中的崩溃-如何?,linux,gdb,embedded-linux,Linux,Gdb,Embedded Linux,我对使用GDB进行调试很有经验,所以我的问题与调试符号不可用无关:)。我正在处理mutti线程程序中的崩溃。就在崩溃之前,我在GDB中看到了以下日志,回溯并没有给我多少信息。信息线程再次显示我没有在应用程序空间下运行。关于我如何处理这个问题的任何建议 [New Thread 1755] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1755] warning: GDB can't find th

我对使用GDB进行调试很有经验,所以我的问题与调试符号不可用无关:)。我正在处理mutti线程程序中的崩溃。就在崩溃之前,我在GDB中看到了以下日志,回溯并没有给我多少信息。信息线程再次显示我没有在应用程序空间下运行。关于我如何处理这个问题的任何建议

[New Thread 1755]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1755]
warning: GDB can't find the start of the function at 0x2ac17638.

    GDB is unable to find the start of the function at 0x2ac17638
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
    This problem is most likely caused by an invalid program counter or
stack pointer.
    However, if you think GDB should simply search farther back
from 0x2ac17638 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
0x2ac17638 in ?? ()
(gdb) bt
#0  0x2ac17638 in ?? ()
(gdb) info thread
[New Thread 1737]
[New Thread 1738]
[New Thread 1739]
[New Thread 1740]
[New Thread 1741]
[New Thread 1742]
[New Thread 1744]
[New Thread 1745]
[New Thread 1746]
[New Thread 1747]
[New Thread 1748]
[New Thread 1749]
[New Thread 1750]
[New Thread 1751]
[New Thread 1752]
[New Thread 1753]
[New Thread 1754]
[New Thread 1756]
  20 Thread 1756  0x2aac1068 in ?? ()
  19 Thread 1754  0x2abd62b4 in ?? ()
  18 Thread 1753  0x2abd62b4 in ?? ()
  17 Thread 1752  0x2aabda58 in ?? ()
  16 Thread 1751  0x2abd62b4 in ?? ()
  15 Thread 1750  0x2aabda58 in ?? ()
  14 Thread 1749  0x2aabda58 in ?? ()
  13 Thread 1748  0x2aabda58 in ?? ()
  12 Thread 1747  0x2aabfb44 in ?? ()
  11 Thread 1746  0x2aabfb44 in ?? ()
  10 Thread 1745  0x2aabfb44 in ?? ()
  9 Thread 1744  0x2aabfb44 in ?? ()
  8 Thread 1742  0x2aabfb44 in ?? ()
  7 Thread 1741  0x2aac15dc in ?? ()
  6 Thread 1740  0x2abd62b4 in ?? ()
  5 Thread 1739  0x2abd62b4 in ?? ()
  4 Thread 1738  0x2abd62b4 in ?? ()
  3 Thread 1737  0x2aabfb44 in ?? ()
* 2 Thread 1755  0x2ac17638 in ?? ()
  1 Thread 1736  0x2abd56bc in ?? ()
warning: GDB can't find the start of the function at 0x2ac17638.

另外,这是一个基于MIPS的嵌入式linux,问题很少会重现,但在启动时。

第一个问题始终是您是否有调试符号?您正在使用-g编译源代码,而不是剥离二进制文件。你怎么能说你“没有在应用程序空间中运行”?是的,我有调试符号,我已经提到过了。当用户空间代码运行时,我会在线程后看到有效的函数名(当我执行info线程时),至少有一个线程会在应用程序空间中运行。