[PATCH 3/7] range stepping: gdbserver on x86/linux

Yao Qi yao@codesourcery.com
Wed May 22 10:06:00 GMT 2013


On 05/21/2013 02:00 AM, Pedro Alves wrote:
> The issue was actually with:
>
> 	  if (end > 0)
> 	    {
> 	      struct thread_info *tp = find_thread_ptid (ptid);
>
> 	      /* GDB should not send range stepping for all threads of
> 		 a process, like 'vCont;rSTART,END:pPID.-1', TP can't
> 		 be NULL.  */
> 	      gdb_assert (tp != NULL);
>
> I think it's best not to error on this as nothing in the protocol actually
> prohibits it, and we might take advantage of it at some point.  The way

OK, looks I abused gdb_assert some times, :).

> gdbserver handles vCont requests currently is by letting the target
> match the ptid to whatever thread/lwp.  That means leaving server.c
> only knowing about how to parse the rsp and construct a thread_resume,
> and then pass that down to the target.  Conceivably, a target might
> not need to keep the step range anywhere, if it has something like
> a PTRACE_STEP_RANGE at the kernel level.  (There's PTRACE_BLOCKSTEP,
> but it's not the same).

Yeah, that makes sense to me.  I didn't realize such abstraction when 
reading the code.  Thanks for your explanation.

-- 
Yao (齐尧)



More information about the Gdb-patches mailing list