Re: gdbserver for arm does not support multi-process debugging

Luis Machado <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Hi,

 From reading the GDB NEWS file, proper support for gdbserver 
remote/extended-remote fork/vfork event reporting was included in GDB 
7.11, commit 19d9d4efd18bcc633e99cb6a3e39bd9b22ca70ce and others.

I'd give a more recent GDB a try, since GDB 7.6 is mora than 5 years old 
now.

On 10/29/19 7:42 AM, 刘康 wrote:
> Hi,
> My gdbserver andarm-linux-androideabi-gdbversion are both 7.6. and my 
> reproduction way is as follow:
> 
> 
> 
> and my gdbremotescript.gdb is
> 
> 
> the debug target "usb_upgrade_check" is the ELF of the source code 
> above(just ignore its strange name...it means nothing:-)     )
> 
> my target and host is communicating via TCP/IP protocol and my target 
> gdbserver launch parameter is
> 
> 
> my target's kernel version is 3.10.86
> 
> When everything is ready I do "set detach-on-fork off" and "set 
> follow-fork-mode child" at host and execute the continue command.
> The problem comes: host always has only one inferior which trace parent 
> process, no new inferior will be created and the child process could not 
> be traced in any way.
> I have also tried version 7.9 and the performance is the same.
> 
> My kernel and libc works well for syscall like ptrace and waitpid , 
> because I have make sure that the linux_test_for_tracefork() has no 
> problem by adding gdbserver some log.
> 
> At 2019-10-28 20:26:33, "Luis Machado" <[email protected]> wrote:
>>Do let us know what you see. If it still doesn't work with the most 
>>recent versions, it may be a real bug somewhere (not necessarily in 
>>gdb/gdbserver).
>>
>>On 10/28/19 8:12 AM, 刘康 wrote:
>>> Hi,
>>> I see, maybe my gdbserver version is too old...I'll compile a latest 
>>> version and try again.
>>> 
>>> Thank you so much for your help!
>>> 
>>> 
>>> At 2019-10-24 18:38:46, "Luis Machado" <[email protected]> wrote:
>>>>Hi,
>>>>
>>>>I just ran a quick check (foll-fork.exp and follow-vfork.exp tests) on a 
>>>>arm machine and things worked as expected.
>>>>
>>>>What version of GDB/kernel are you using?
>>>>
>>>>On 10/24/19 2:32 AM, 刘康 wrote:
>>>>> Hi Luis,
>>>>> 
>>>>> Yes, I know that gdbserver willcatch PTRACE_EVENT_FORK in 
>>>>> gdb/gdbserver/linux-low.c:handle_extended_wait and get the child 
>>>>> process's pid via PTRACE_GETEVENTMSG.
>>>>> 
>>>>> I found the way of X86 version gdb to deal with PTRACE_EVENT_FORKwill 
>>>>> set waitstatus toTARGET_WAITKIND_FORKED and add a new inferior .What's 
>>>>> more ,it can trace child/parent process automatically as long as I set 
>>>>> "follow-fork-mode" to "child" or "parent".
>>>>> 
>>>>> But it seems like gdbserver will not tell PTRACE_EVENT_FORK to thehost 
>>>>> arm-XXX-gdb this event ,as a result , user cannot trace child process or 
>>>>> add a new inferior no matter what value of "detach-on-fork off" and 
>>>>> "follow-fork-mode" I have tried.
>>>>> 
>>>>> At 2019-10-18 20:27:19, "Luis Machado" <[email protected]> wrote:
>>>>>>Hi,
>>>>>>
>>>>>>On 10/17/19 3:19 AM, 刘康 wrote:
>>>>>>> Dear [email protected]
>>>>>>> 
>>>>>>> 
>>>>>>> I am researching the gdbserver's source code for ARM, what confused me is that it does not support multi-process to debug the target's child process, cause it dose not interesting in PTRACE_EVENT_FORK, I don't know whether it's a bug or it's just a feature by design.
>>>>>>
>>>>>>The handling of PTRACE_EVENT_FORK, PTRACE_EVENT_VFORK and 
>>>>>>PTRACE_EVENT_CLONE is in generic linux code. See 
>>>>>>gdb/gdbserver/linux-low.c:handle_extended_wait.
>>>>>>
>>>>>>As long as the kernel supports reporting such events via ptrace and we 
>>>>>>are debugging using extended remote mode (not regular remote mode), it 
>>>>>>should work. If it doesn't, then we may have a problem that we should fix.
>>>>>>
>>>>>>Does that answer your question?
>>>>>>
>>>>>>Luis
>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 
>>> 
> 
> 
>
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.