how GDB use ptrace to return from a function

Yubin Ruan <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CAJYFCiMqA1NO-32g7_vrwpU-h7dmyPaqUe=UZzey1gfFz7ax3g@mail.gmail.com>
Hi GDB developer ;-)

I am writing a toy debugger and currently looking into the GDB source
because I want to know: after setting the tracee's registers and
trying to let it execute a function with ptrace(PTRACE_CONT, ...), how
can the tracee return to the tracer?

Currently I manipulate the tracee's stack and place a NULL return
address there (I am on X86), so that after ptrace(PTRACE_CONT, ...),
the tracee will execute a function and return, at which point a SIGSEV
is generated (because the return address is NULL), so tracee will be
caught by the tracer again.

I don't know whether GDB is using this kind of technique. If anyone
know that, can you enlighten me, and probably point me to the source?

Yubin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.