回答
這和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. 如何讓Dotfuscator從命令行工作?
- 3. 'N'命令如何在sed中工作?
- 4. 命令模式如何工作?
- 5. 命令行解釋器如何工作?
- 6. 慶典如何使命令工作
- 7. SQL UPDATE命令如何工作
- 8. bash命令「grep -v」:0「」如何工作
- 9. 後臺工作,如何構建命令
- 10. 命令行參數如何工作?
- 11. 如何使用pstack命令獲得最後一個n行堆棧?
- 12. java命令工作,但javac命令不?
- 13. 如何解釋pstack日誌?
- 14. 是否有人知道Solaris p系列命令(pstack,pmap)的副作用?
- 15. awk:如何解釋/讀取下面的命令(該命令如何工作)
- 16. rails命令不工作
- 17. mysqldump命令不工作?
- 18. 的setcookie命令不工作
- 19. AUTO_INCREMENT命令不工作
- 20. Runtime.exec命令不工作
- 21. UNIX JOIN命令不工作
- 22. ssh scp命令不工作
- 23. exec命令不工作(PHP)
- 24. 樹命令行不工作
- 25. csvkit in2csv命令不工作
- 26. exec命令不工作
- 27. sed命令不工作
- 28. bash - cd命令不工作?
- 29. rake命令不工作
- 30. MySQL命令行不工作
http://www.linuxcommand.org/man_pages/pstack1.html – 2014-03-31 04:59:50