2013-08-21 37 views
7

由於某些原因,我無法附加到我自己的流程?!工作正常,如果我嘗試strace作爲根。PTRACE_ATTACH不允許用於

$ ./list8 & 
[1] 3141 
$ child4 starts... 

$ strace -p 3141 
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted 
Could not attach to process. If your uid matches the uid of the target 
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try 
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf 
$ cat /proc/sys/kernel/yama/ptrace_scope 
1 

上lubuntu 13.10

Linux goal 3.8.0-19-generiC#29-Ubuntu SMP Wed Apr 17 18:19:42 UTC 2013 i686 i686 i686 GNU/Linux 

那麼接下來怎麼做gdb連接到用戶自己的進程中運行,而不必淤泥與周圍的內核設置(ptrace_scope)?

+0

http://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process –

回答

5

看起來像你回答了你自己的問題 - 你有ptrace_scope設置爲1,所以你只能跟蹤直接的孩子。要允許跟蹤屬於同一用戶的任何進程,請將其設置爲0.使用gdb attach命令也需要此選項。

讀取的/etc/sysctl.d/10-ptrace.conf文件作爲錯誤信息提示...

+0

你說得對,GDB默認情況下不無論是在工作這個新的Lubuntu!如何從C創建一個直接的孩子? execl()似乎不工作 - 在PTRACE_ATTACH上獲取錯誤 – user2705045

+0

@ user2705045:'fork'創建一個子項。如果ptrace_scope設置爲1,則只能附加到您直接分叉的孩子(不是孫輩或兄弟姐妹) –

2

如果失敗的根源,我有一個問題stracing啓蒙(E17)和原因是你不能對一個已經在gdb下進行整理或運行的進程進行調整,一些程序會這樣做,以便他們可以獲得自己的調試信息。

5

如果strace以root身份失敗,請嘗試檢查... gdbstrace未在後臺運行(這是我的情況)。

命令:ps aux | grep "gdb\|strace"