2013-10-06 57 views
12

我試圖連接使用gdb一個程序,但它返回我:GDB的ptrace操作不允許

附加到進程29139 無法附加到進程。如果您的uid與目標 進程的uid匹配,請檢查/ proc/sys/kernel/yama/ptrace_scope的設置,或者再次嘗試 作爲root用戶。有關更多詳細信息,請參閱/etc/sysctl.d/10-ptrace.conf ptrace:不允許操作。

edb-debugger returns「無法附加到進程,請檢查權限,然後再試一次。」

strace的回報 「附:ptrace的(PTRACE_ATTACH,...):操作不允許」

我改變 「kernel.yama.ptrace_scope」 1比0和「的/ proc/sys目錄/內核/閻王/ ptrace_scope 「1至0,並試圖 」設置環境LD_PRELOAD =/ptrace.so「 與此:

#include <stdio.h> 
int ptrace(int i, int j, int k, int l) 
{ 
    printf(" ptrace(%i, %i, %i, %i), returning -1\n", i, j, k, l); 
    return 0; 
} 

,但它仍然返回相同的錯誤。我如何將它附加到調試器?

回答

0

我不知道你在用LD_PRELOAD或你的ptrace函數做什麼。

爲什麼不嘗試將gdb附加到一個非常簡單的程序?製作一個簡單地重複打印Hello或其他內容的程序,並使用gdb --pid [hello program PID]附加到它。

如果這不起作用,那麼你確實有問題。

另一個問題是用戶ID。您正在追蹤的程序是否將自己設置爲另一個UID?如果是,那麼除非使用相同的用戶標識或root用戶,否則無法進行追蹤。

+0

它attachs簡單的程序,但我試圖附上一個crackme文件。它有反調試保護[像這樣](http://xorl.wordpress.com/2009/01/01/quick-anti-debugging-trick-for-gdb/)。 – user2850750

+0

@ user2850750:我在答案中增加了一點。 –

+0

我正在嘗試將它作爲根 – user2850750

2

沒有真正解決上述的用例,但我有這個問題:

問題:它發生,我開始我的程序與sudo,所以啓動GDB時,它是給我ptrace: Operation not permitted

解決方案sudo gdb ...

0

也許有人已經連接使用gdb這一過程。

  • ps -ef | grep gdb

不能gdb連接兩次相同的進程。

9

如果使用的是碼頭工人,你可能會需要這些選項:

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined 
0

我都面臨着同樣的問題,嘗試了很多的解決方案,但最後,我已經找到了解決辦法,但實際上我不不知道問題是什麼。首先,我修改了ptrace_conf的值並以root身份登錄到Ubuntu,但問題仍然存在。但是,這事是gdb的最奇怪的東西拿給我一個消息,說:

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 warning: process 3767 is already traced by process 3755 ptrace: Operation not permitted.

用ps命令終端,並沒有列出的過程3755。

我在/ proc/$ pid中找到了進程3755,但我不明白它是什麼!

最後,我刪除了目標文件(foo.c),我嘗試使用PTRACE_ATTACH系統調用將其附加到vid gdb和tracer c程序中,並在另一個文件夾中創建另一個c程序並編譯它。

問題已解決,我可以通過gdb或ptrace_attach syscall將其附加到另一個進程。

(gdb) attach 4416

Attaching to process 4416

我送了很多的信號處理4416我既GDB和ptrace函數進行了測試,他們都正常運行。

真的,我不知道問題是什麼,但我認爲這不是在Ubuntu的錯誤是很多網站都提到它,這樣https://askubuntu.com/questions/143561/why-wont-strace-gdb-attach-to-a-process-even-though-im-root