我很好奇 pstack 命令如何打印在 PID 下运行的所有线程的堆栈跟踪?
它必须与 gdb 的方式有所不同,因为进程在 gdb 环境中运行,但是 pstack 在进程执行后执行。
它的总体思路与gdb 相同。pstack 使用 ptrace,它允许外部进程附加到已知的 pid 并打印出信息(通过当前寄存器知道堆栈)。
如果您想确切地了解它是如何完成的,请查找有关 的信息ptrace。
此外,进程并不真正在“gdb 内部”运行。您可以通过运行将 gdb 连接到正在运行的进程,而不会有太多麻烦gdb executable pid。
| 归档时间: |
|
| 查看次数: |
15062 次 |
| 最近记录: |