Re: [PATCH] tracepoint: add new trace command "printf"[0] gdb

Hui Zhu
2011-01-04T04:34:11Z

On Tue, Jan 4, 2011 at 03:21, Doug Evans <dje@google.com> wrote:
> On Mon, Jan 3, 2011 at 8:29 AM, Hui Zhu <teawater@gmail.com> wrote:
>> Hi,
>>
>> I add a new patch add new trace command "printf".
>> This printf is same with the simple gdb command, it can do formatted
>> output.  But it will happen in gdbserver part when it break by a
>> tracepoint.
>> Then the user can get the format value that he want in tracepint.  It
>> will be more easy and clear to handle the bug sometimes.
>
> One could do this with a breakpoint and attaching commands to the
> breakpoint too, right?
> Or are they too cumbersome for the intended use case?
> [Extending tracepoints like this doesn't seem justified yet, so I'm
> just looking for more data.]
>

Thanks Doug.

I agree with the tracepoint "printf" will be very close with add a
breakpoint commands "printf" if the gdb and gdbserver in same pc.

But I have some status need the tracepoint "printf" that breakpoint is
not very fit with.
1. The gdb and gdbserver connect through a low speed net. Sometimes,
the debug target that I use is in the other side of the earth.
The breakpoint commands "printf" is too slow for that issue, because
each time the inferior is break by the breakpoint, gdbserver need send
the rsp package to gdb, and gdb will get the data that "printf" need
though low speed net from gdbsever. And sometime, it will disconnect.
But if through tracepoint, I will not have this trouble. I can "set
disconnected-tracing on" to handle the network disconnect issue. I
still need to get the value from inferior through tfind and other
commands. It is still be affect by the low speed network. So I make
the tracepoint "printf" to handle it.

2. KGTP(https://code.google.com/p/kgtp/) just support the gdb
tracepoint rsp commands. For not stop the Linux the Kernel. It
doesn't support the breakpoint.
So if it want directly show the Kernel val value, it need "printf".
This printf will be very powerful that can set most part of Kernel and
we can set condition for it.
And in https://code.google.com/p/kgtp/wiki/HOWTO#Offline_debug, we
can dump the gdbrsp package to a file and send to Kernel. Then kernel
can be debug without a local gdb or a remote connect. But user still
need copy the trace file to pc that have GDB. But if support
tracepoint "printf", we will not need do that.

Thanks,
Hui