Re: Improved ksymoops output

From: Denis Vlasenko (vda@port.imtp.ilyichevsk.odessa.ua)
Date: Thu Feb 14 2002 - 11:02:16 EST


On 13 February 2002 08:15, Russell King wrote:
> > Trace; c0130e00 <__get_free_pages(mm/page_alloc.c)+10/1c>
> > Trace; c01459cf <__pollwait(fs/select.c:viro@math.psu.edu,tester3@host.org)+33/90>
>
> I don't call this format "better" nor "improved".
>
> It might be better to have something like this following at the end:
>
> File; __get_free_pages: mm/page_alloc.c
> File; __pollwait: fs/select.c
> File; do_select: fs/select.c
> File; process_timeout: kernel/sched.c
> File; restore_sigcontext: arch/i386/kernel/signal.c
> File; sock_poll: net/socket.c
> File; sys_gettimeofday: kernel/time.c
> File; sys_select: fs/select.c
> File; sys_setitimer: kernel/itimer.c
>
> Maintainer; fs/select.c <viro@math.psu.edu> <tester3@host.org>

After some thought I prefer file names on the "Trace;" lines.
"Maintainer;" is fine.

I have better script which does exactly this.
It does not use modified System.map.
It requires func2file.map and email2pattern.map.
Works as a filter for ksymoops. Sample output:

# ksymoops | add_file_email
Call Trace: [<c0130e00>] [<c01459cf>] [<c0113ee7>] [<c0113e38>] [<c021049f>]
   [<c0145d05>] [<c0146002>] [<c010644e>] [<c011b432>] [<c011b7e3>] [<c01071ff>]
Warning (Oops_read): Code line not seen, dumping what data is available

Trace; c0130e00 <__get_free_pages+10/1c> mm/page_alloc.c
Trace; c01459cf <__pollwait+33/90> fs/select.c
Trace; c0113ee7 <schedule_timeout+4f/98> kernel/sched.c
Trace; c0113e38 <process_timeout+0/60> kernel/sched.c
Trace; c021049f <sock_poll+1f/24> net/socket.c
Trace; c0145d05 <do_select+209/214> fs/select.c
Trace; c0146002 <sys_select+2d2/620> fs/select.c
Trace; c010644e <restore_sigcontext+126/138> arch/i386/kernel/signal.c
Trace; c011b432 <sys_setitimer+76/150> kernel/itimer.c
Trace; c011b7e3 <sys_gettimeofday+1b/17c> kernel/time.c
Trace; c01071ff <system_call+33/38>

1 warning issued. Results may not be reliable.

Maintainer; fs/select.c:tester3@host.org,viro@math.psu.edu

Script is below

--
vda

add_file_email ============== #!/usr/bin/python

import sys import string import re

# # Build func->file dictionary # f=open('func2file.map', 'r') func2file={} l=f.readline() while l <> '': l=l[:len(l)-1] t=string.split(l) func2file[t[0]]=t[1] l=f.readline()

# # Read email:pattern list # f=open('email2pattern.map', 'r') people=[] l=f.readline() while l <> '': l=l[:len(l)-1] people.append(l) l=f.readline()

# # Read stdin, add file names and email addresses to Trace; lines # f=sys.stdin l=f.readline() maint={} while l <> '': l=l[:len(l)-1] if l[:6]=='Trace;': #print '>'+l[:6]+'<',l[:6]=='Trace;' func=string.split(string.split(l,'<')[1],'+')[0] #print func if func2file.has_key(func): file=func2file[func] l=l+'\t'+file for p in people: t=string.split(p,':') email=t[0] pattern=t[1] expr=re.compile(pattern) if expr.match(file): if maint.has_key(file): maint[file][email]='' else: maint[file]={email:''} print l l=f.readline()

# # Print "Maintainer; file:email,email" lines # print for m in maint.keys(): print 'Maintainer;', l=m+':' for e in maint[m].keys(): l=l+e+',' print l[:len(l)-1] - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Feb 15 2002 - 21:01:01 EST