Re: Linux Kernel GDB tracepoint module 2010-8-30 release

Steven
2010-09-04T08:39:34Z

On Sat, 2010-09-04 at 11:41 +0800, Hui Zhu wrote:
> Hi Steven,
>
> On Fri, Sep 3, 2010 at 17:06, Steven <mqyoung@gmail.com> wrote:
> > Dear Hui,
> >
> > I encountered two issue when I use your GTP.
> >
> > 1) Following your HOWTO, I collect the two variables
> jiffies_64(global),
> > *file(argument), the result are as following, where you may see
> > jiffies_64 = 4298520928, that's OK, but the members of *file are all
> 0.
> > What's the problem? Thank you very much!
> >
> -------------------------------------------------------------------
> > (gdb) trace vfs_readdir
> > Tracepoint 3 at 0xc1175690: file fs/readdir.c, line 23.
> > (gdb) actions
> > Enter actions for tracepoint 3, one per line.
> > End with a line saying just "end".
> > > collect jiffies_64
> > > collect *file
> > > end
> > (gdb) tstart
> > (gdb) tstop
> > (gdb) tfind
> > #0 0xc1175691 i (file=0x0, filler=0, buf=0x0) at
> > fs/readdir.c:23
> > 23 {
> > (gdb) p jiffies_64
> > $7 = 4298520928
> > (gdb) p *file
> > $8 = {f_u = {fu_list = {next = 0x0, prev = 0x0}, fu_rcuhead =
> > {next = 0x0, func = 0}}, f_path = {mnt = 0x0, dentry = 0x0},
> > f_op = 0x0, f_lock = {{ rlock = {raw_lock = {slock = 0}}}},
> > f_count = {counter = 0}, f_flags = 0, f_mode = 0, f_pos = 0,
> > f_owner = {lock = {raw_lock = { lock = 0}}, pid = 0x0,
> pid_type
> > = PIDTYPE_PID, uid = 0, euid = 0, signum = 0}, f_cred = 0x0,
> > f_ra = {stra_pages = 00, f_security = 0x0, private_data =
> 0x0,
> > f_ep_links = {next = 0x0, prev = 0x0}, f_mapping = 0x0}
> >
> -------------------------------------------------------------------
> >
>
> It looks like a old bug that I have fixed in new version.
> I try it in 20100830 version cannot reproduce this issue:
> (gdb) target remote /proc/gtp
> Remote debugging using /proc/gtp
> 0x0000000000000000 in ?? ()
> (gdb) trace vfs_readdir
> Tracepoint 1 at 0xffffffff81147d3c: file
> /home/teawater/kernel/linux-2.6/fs/readdir.c, line 24.
> (gdb) actions
> Enter actions for tracepoint 1, one per line.
> End with a line saying just "end".
> >collect jiffies_64
> >collect *file
> >end
> (gdb) tstart
> (gdb) sh
> sharedlibrary shell show
> (gdb) shell ls
> 2 block firmware i ipc Makefile
> modules.order
> scripts source t~ vmlinux
> a.out crypto fs include kernel mm
> Module.symvers security
> System.map usr vmlinux.o
> arch drivers gdb.txt init lib modules.builtin
> net
> sound t virt
> (gdb) tstop
> (gdb) tfind
> Found trace frame 0, tracepoint 1
> #0 0xffffffff81147d3d in vfs_readdir (file=0xffff88007b22bcc0,
> filler=0xffffffff81147ba0 <filldir>, buf=0xffff88006cc31f38)
> at /home/teawater/kernel/linux-2.6/fs/readdir.c:24
> 24 {
> (gdb) p jiffies_64
> $1 = 4295113995
> (gdb) p *file
> $2 = {f_u = {fu_list = {next = 0xffff88007b22b480, prev =
> 0xffffe8ffffc86960}, fu_rcuhead = {next = 0xffff88007b22b480,
> func = 0xffffe8ffffc86960}}, f_path = {mnt = 0xffff880037bd6b00,
> dentry = 0xffff88007e15b6c0}, f_op = 0xffffffff81622b00, f_lock = {{
> rlock = {raw_lock = {slock = 0}}}}, f_sb_list_cpu = 1, f_count =
> {counter = 2}, f_flags = 624640, f_mode = 29, f_pos = 0, f_owner = {
> lock = {raw_lock = {lock = 16777216}}, pid = 0x0, pid_type =
> PIDTYPE_PID, uid = 0, euid = 0, signum = 0}, f_cred =
> 0xffff88007ae6f780,
> f_ra = {start = 0, size = 0, async_size = 0, ra_pages = 32,
> mmap_miss = 0, prev_pos = -1}, f_version = 0, f_security = 0x0,
> private_data = 0x0, f_ep_links = {next = 0xffff88007b22bd68, prev =
> 0xffff88007b22bd68}, f_mapping = 0xffff880036662590}
>
>
> Could you try the new version? I think it will work OK.

I use the latest GTP, the same problem, while I use the latest GDB(7.2),
I get the correct value of *file(the version of my old gdb is 6.8).
(Intel P3 CPU)

Many thanks to ALL,
Steven