This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Bug translator/3534] New: support wildcarded linenumber probe syntax


fche at redhat dot com wrote:

Idea: probe kernel.function("function@*:*") would put a probe at
every ~instruction (line record) boundary within the function.
This would allow a script to collect detailed profile/coverage
information (albeit at a considerable trapping overhead cost).



I am not sure i followed your idea. For example if I have the following function
If i specify probe kernel.statement("get_symbol_offset@kernel.kallsyms.c:*"), the above feature will place probes for every instruction of an executable statement in this case line nos 139, 145,146 and 148. Did i get your proposal correct?


If i got your above idea correct, is this proposal is to support tracing of a function without tracing other functions it calls. In other words i am trying to understand what is the underlying motivation for this proposal.

132 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l132> static unsigned int get_symbol_offset(unsigned long pos)
133 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l133> {
134 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l134> u8 *name;
135 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l135> int i;
136 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l136>


137 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l137> /* use the closest marker we have. We have markers every 256 positions,
138 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l138> * so that should be close enough */
139 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l139> name = &kallsyms_names[ kallsyms_markers[pos>>8] ];
140 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l140>


141 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l141> /* sequentially scan all the symbols up to the point we're searching for.
142 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l142> * Every symbol is stored in a [<len>][<len> bytes of data] format, so we
143 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l143> * just need to add the len to the current pointer for every symbol we
144 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l144> * wish to skip */
145 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l145> for(i = 0; i < (pos&0xFF); i++)
146 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l146> name = name + (*name) + 1;
147 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l147>


148 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l148> return name - kallsyms_names;
149 <http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;h=eeac3e313b2bfa41f26a4ccd9235232593fb947c;hb=1b9bb3c14c60324b54645ffefbe6d270f9fd191c;f=kernel/kallsyms.c#l149> }


bye,
Vara Prasad


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]