【问题标题】:how to see stack trace for a particular thread within a hanged process in Linux如何在 Linux 中的挂起进程中查看特定线程的堆栈跟踪
【发布时间】:2018-03-02 18:02:24
【问题描述】:

我有一个在 Linux 下运行时卡住的多线程进程。但我没有pstack 的多线程版本(使用gstack 制作别名)。因此,gstack <pid> 没有为我提供任何东西。我如何(a)将gdb附加到已经运行的进程(b)获取单个线程的堆栈跟踪(c)从threadid(如果知道)知道正在运行的进程的threadid(d)我如何查看堆栈跟踪/在卡住的进程下为正在运行的线程调用堆栈?

【问题讨论】:

  • 至少对于 (a),您是否阅读过 gdb 的基本手册页?对于其他人,您是否阅读过 GDB 帮助页面?

标签: linux multithreading stack-trace callstack pstack


【解决方案1】:

首先,使用选项-O0 -ggdb 编译它以获得最佳调试效果。

如果可以在gdb下运行,直接运行

   # gdb ./yourbinary

然后等待问题。当进程卡住时,只需按^C 即可进入。

如果不能在 gdb 下运行,只需:

   # gdb --pid=<YOUR PID>

在这两种情况下,输入info threads,您将看到所有线程。然后选择一个,您可以看到bt 或其他任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多