回答
这和gdb一样。 pstack使用ptrace,它允许外部进程附加到已知的pid并打印出信息(通过当前寄存器可以知道堆栈)。
如果您想确切知道它是如何完成的,请查找有关ptrace
的信息。
另外,进程并不真正运行“内部gdb”。您可以通过运行gdb executable pid
将gdb附加到正在运行的进程中,而不会造成太大麻烦。
是的,对不起,语言处理的使用不运行内部gdb ...但我的疑问仍然存在,ptrace跟踪进程所作的系统调用,那么它怎么能给出pid内所有线程的堆栈跟踪? – 2010-07-07 10:44:35
这是'strace',负责跟踪系统调用。 'ptrace'可以做更多的事情http://linux.die.net/man/2/ptrace - 这是围绕另一个进程的普遍方式。它可以获取/设置外部进程的寄存器,内存范围,指令指针等等。因此,在堆栈中叩击几乎就像获得SP并读取(下)内存一样简单。 – viraptor 2010-07-07 14:47:51
- 1. 命令如何工作?
- 2. 如何使用pstack命令获得最后一个n行堆栈?
- 3. 合并命令如何工作?
- 4. bash命令“grep -v”:0“”如何工作
- 5. Linux中的“rm”命令如何工作?
- 6. 后台工作,如何构建命令
- 7. 命令行解释器如何工作?
- 8. 'N'命令如何在sed中工作?
- 9. 如何让Dotfuscator从命令行工作?
- 10. 如何HDFS mv命令工作
- 11. 庆典如何使命令工作
- 12. 命令模式如何工作?
- 13. SQL UPDATE命令如何工作
- 14. 命令行参数如何工作?
- 15. Hadoop DFS的CopyFromLocal命令如何工作?
- 16. CODE 8086命令LOOPW如何工作?
- 17. 这个oracle SQL命令如何工作?
- 18. 如何解释pstack日志?
- 19. 是否有人知道Solaris p系列命令(pstack,pmap)的副作用?
- 20. java命令工作,但javac命令不?
- 21. awk:如何解释/读取下面的命令(该命令如何工作)
- 22. 复合命令不工作
- 23. GUI工作流命令
- 24. 睡眠命令不工作
- 25. TortoiseHG工作台命令
- 26. 的setcookie命令不工作
- 27. PHP Cron工作命令
- 28. SED命令不工作
- 29. Windows cmd。命令doens't工作
- 30. CKEditor的命令不工作
http://www.linuxcommand.org/man_pages/pstack1.html – 2014-03-31 04:59:50