From: Marc Khouzam <marc.khouzam@ericsson.com>
To: "'Michael Snyder'" <msnyder@vmware.com>,
"'Hui Zhu'" <teawater@gmail.com>
Cc: "'gdb@sourceware.org'" <gdb@sourceware.org>
Subject: RE: Linux Kernel GDB tracepoint module demo release
Date: Mon, 16 Aug 2010 15:35:00 -0000 [thread overview]
Message-ID: <F7CE05678329534C957159168FA70DEC5716DF584F@EUSAACMS0703.eamcs.ericsson.se> (raw)
In-Reply-To: <4C6311E0.5070909@vmware.com>
> -----Original Message-----
> From: gdb-owner@sourceware.org
> [mailto:gdb-owner@sourceware.org] On Behalf Of Michael Snyder
> Sent: Wednesday, August 11, 2010 5:11 PM
> To: Hui Zhu
> Cc: gdb@sourceware.org; linux-kernel@vger.kernel.org
> Subject: Re: Linux Kernel GDB tracepoint module demo release
>
> Actually, this is kind of interesting.
> Can your system set a tracepoint at any arbitrary location in the
> kernel? If so, I think that makes it more powerful than existing
> systems such as LTTng, which can only trace statically pre-determined
> locations.
You missed a great Tracing mini-summit at LinuxCon last Monday:
http://lttng.org/tracingwiki/index.php/TracingMiniSummit2010
We discussed the different tracing technologies and talked about
Kernel vs User space.
So, yes, LTTng provides highly efficient _static_ tracing for the kernel.
The LTTng tracepoints are already in the kernel. http://lttng.org/
There is also a new User Space Tracer (UST) provided by LTTng.
http://lttng.org/ust
There is also Kprobes, which are dynamic tracepoints for the Kernel.
They seem very similar to GDB Tracepoints actually.
http://sourceware.org/systemtap/kprobes/
Stan gave a great presentation about GDB Tracepoints and some upcoming work.
And I spoke about Eclipse's support for GDB Tracepoints and for LTTng.
I think having access to GDB Tracepoints for the kernel may be very nice.
I imagine a user tracing both kernel and user space at the same time, using
the same interface (preferably Eclipse :-))
Interesting work Hui!
Marc
>
> Hui Zhu wrote:
> > Hi,
> >
> > GDB Tracepoint
> (http://sourceware.org/gdb/current/onlinedocs/gdb/Tracepoints.html)
> > is new feature that make GDB can debug real-time program.
> > I think this feature is very fit for debug Linux Kernel.
> So I make a
> > lkm to make kernel support it. You can get it in
> > https://code.google.com/p/kgtp/
> >
> > I just release the demo for it. It just support collect $reg in
> > x86_32. I will add the other tracepoint support in the future.
> >
> > For example:
> > tar vxjf gtp_20100811.tar.bz2
> > cd gtp
> > make
> > insmod gtp.ko
> > gdb ./vmlinux
> > GNU gdb (GDB) 7.2.50.20100720-cvs
> > Copyright (C) 2010 Free Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> > This is free software: you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law. Type
> "show copying"
> > and "show warranty" for details.
> > This GDB was configured as "i686-pc-linux-gnu".
> > For bug reporting instructions, please see:
> > <http://www.gnu.org/software/gdb/bugs/>...
> > Reading symbols from /vmlinux...done.
> > (gdb) target remote /proc/gtp
> > Remote debugging using /proc/gtp
> > 0x00000000 in ?? ()
> > (gdb) trace vfs_readdir
> > Tracepoint 1 at 0xc01a1ac0: file
> > /home/teawater/kernel/linux-2.6/fs/readdir.c, line 23.
> > (gdb) actions
> > Enter actions for tracepoint 1, one per line.
> > End with a line saying just "end".
> >> collect $reg
> >> end
> > (gdb) tstart
> > (gdb) shell ls
> > (gdb) tstop
> > (gdb) tfind
> > Found trace frame 0, tracepoint 1
> > #0 0xc01a1ac1 in vfs_readdir (file=0xc5528d00,
> filler=0xc01a1900 <filldir64>,
> > buf=0xc0d09f90) at
> /home/teawater/kernel/linux-2.6/fs/readdir.c:23
> > 23 /home/teawater/kernel/linux-2.6/fs/readdir.c: No such
> file or directory.
> > in /home/teawater/kernel/linux-2.6/fs/readdir.c
> > (gdb) info reg
> > eax 0xc5528d00 -984445696
> > ecx 0xc0d09f90 -1060069488
> > edx 0xc01a1900 -1072031488
> > ebx 0xfffffff7 -9
> > esp 0xc0d09f8c 0xc0d09f8c
> > ebp 0x0 0x0
> > esi 0x8061480 134616192
> > edi 0xc5528d00 -984445696
> > eip 0xc01a1ac1 0xc01a1ac1 <vfs_readdir+1>
> > eflags 0x286 [ PF SF IF ]
> > cs 0x60 96
> > ss 0x8061480 134616192
> > ds 0x7b 123
> > es 0x7b 123
> > fs 0x0 0
> > gs 0x0 0
> > (gdb) tfind
> > Found trace frame 1, tracepoint 1
> > 0xc01a1ac1 23 in /home/teawater/kernel/linux-2.6/fs/readdir.c
> > (gdb) info reg
> > eax 0xc5528d00 -984445696
> > ecx 0xc0d09f90 -1060069488
> > edx 0xc01a1900 -1072031488
> > ebx 0xfffffff7 -9
> > esp 0xc0d09f8c 0xc0d09f8c
> > ebp 0x0 0x0
> > esi 0x8061480 134616192
> > edi 0xc5528d00 -984445696
> > eip 0xc01a1ac1 0xc01a1ac1 <vfs_readdir+1>
> > eflags 0x286 [ PF SF IF ]
> > cs 0x60 96
> > ss 0x8061480 134616192
> > ds 0x7b 123
> > es 0x7b 123
> > fs 0x0 0
> > gs 0x0 0
> > (gdb) tfind
> > Found trace frame 2, tracepoint 1
> > #0 0xc01a1ac1 in vfs_readdir (file=0xc5528300,
> filler=0xc01a19e0 <filldir>,
> > buf=0xc6c2df90) at
> /home/teawater/kernel/linux-2.6/fs/readdir.c:23
> > 23 in /home/teawater/kernel/linux-2.6/fs/readdir.c
> > (gdb)
> > Found trace frame 3, tracepoint 1
> > 0xc01a1ac1 23 in /home/teawater/kernel/linux-2.6/fs/readdir.c
> > (gdb)
> > Target failed to find requested trace frame.
> > (gdb) quit
> > A debugging session is active.
> >
> > Inferior 1 [Remote target] will be killed.
> >
> > Quit anyway? (y or n) y
> >
> > Thanks,
> > Hui
>
>
prev parent reply other threads:[~2010-08-16 15:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-11 16:35 Hui Zhu
2010-08-11 19:04 ` Thiago Jung Bauermann
2010-08-11 19:07 ` Michael Snyder
2010-08-12 1:36 ` Hui Zhu
2010-08-11 21:11 ` Michael Snyder
2010-08-12 1:37 ` Hui Zhu
2010-08-12 17:14 ` Michael Snyder
2010-08-15 6:33 ` Hui Zhu
2010-08-16 15:35 ` Marc Khouzam [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=F7CE05678329534C957159168FA70DEC5716DF584F@EUSAACMS0703.eamcs.ericsson.se \
--to=marc.khouzam@ericsson.com \
--cc=gdb@sourceware.org \
--cc=msnyder@vmware.com \
--cc=teawater@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox