<div><br></div><div><div class="gmail_quote">On Wed, May 8, 2013 at 3:16 PM, Shraddha Kamat <span dir="ltr"><<a href="mailto:sh2008ka@gmail.com" target="_blank">sh2008ka@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Any good tutorial for analyzing kernel call traces ? I want to<br>
know what is the meaning of everything that appears in the call<br>
trace and get to the exact cause of the problem.<br></blockquote><div><br></div><div>sorry , u mean "backtrace" call trace? or kernel oops?<div><br></div><div><a href="http://www.linuxforu.com/2011/01/understanding-a-kernel-oops/" target="_blank">http://www.linuxforu.com/2011/01/understanding-a-kernel-oops/</a></div>
<div><br></div><div>and here is another trace:</div><div><br></div><div><a href="http://elinux.org/Kernel_Function_Trace" target="_blank">http://elinux.org/Kernel_Function_Trace</a></div><div><br></div><div>which depends on the instrumentation method:</div>
<div><br></div><div><a href="http://elinux.org/images/6/68/Kfiboot-9.lst" target="_blank">http://elinux.org/images/6/68/Kfiboot-9.lst</a></div><div><br></div><div><a href="http://elinux.org/Kernel_Instrumentation" target="_blank">http://elinux.org/Kernel_Instrumentation</a></div>
<div><br></div><div><a href="http://elinux.org/Instrumentation_API" target="_blank">http://elinux.org/Instrumentation_API</a></div><div><br></div><div>many of these traces, simply depends on the concept of call frames, or a range of memory addresses allocated on the stack used by the functions.</div>
<div><br></div><div>above page also mentioned the use of gcc -pg, and not mentioned are other features of gcc (man gcc):</div><div><br></div><div><div> -finstrument-functions</div><div> -finstrument-functions-exclude-function-list=sym,sym,...</div>
<div> -finstrument-functions-exclude-file-list=file,file,... </div><div><br></div></div><div>Beware though, sometimes compilation will explicitly remove the use of frame pointer: </div><div><br></div><div>-fomit-frame-pointer</div>
<div><br></div><div>without the "ebp" and "esp" to demarcate the start and end of a frame, there is no way to know the beginning and end of a call frame, and therefore "stack trace", or "call trace" will not be accurately shown. Other possibilities are that the function names are declared with "static" as well, and u will end up with numerical offset from the nearest function with name.</div>
</div><div> </div></div>-- <br>Regards,<br>Peter Teoh
</div>