OK, so you have to rebuild the entire ALSA library and tools with debug 
symbols. Also, your Kernel must have debug symbols turned on. You will need to 
enable various ftrace features with make config. Here is a typical script I use 
to capture program flow.


===
#!/bin/bash
set -x

pause() {
  local dummy
  read -s -r -p "Press any key to continue..." -n 1 dummy
}

echo function_graph > /sys/kernel/debug/tracing/current_tracer
#echo function > /sys/kernel/debug/tracing/current_tracer
echo 100000 > /sys/kernel/debug/tracing/buffer_size_kb
echo function-trace > /sys/kernel/debug/tracing/trace_options
echo latency-format > /sys/kernel/debug/tracing/trace_options
echo graph-time > /sys/kernel/debug/tracing/trace_options
echo funcgraph-tail > /sys/kernel/debug/tracing/trace_options
echo funcgraph-proc > /sys/kernel/debug/tracing/trace_options
echo funcgraph-abstime > /sys/kernel/debug/tracing/trace_options
#echo __do_fault > /sys/kernel/debug/tracing/set_graph_function
echo 1 > /sys/kernel/debug/tracing/tracing_on

#Insure modprobe statements here if you want to trace the kernel module at 
startup 

aplay command

#Uninstall Kernel module here

echo 0 > /sys/kernel/debug/tracing/tracing_on

#cat /sys/kernel/debug/tracing/trace_pipe |grep <filter term> | grep -v 
"<remove first term>" | grep -v "<remove second term>" > test-trace.txt
#cat /sys/kernel/debug/tracing/trace_pipe | sed -n '/<term>/p' | sed '/<remove 
line term>/d' > test-1-trace.txt
cat /sys/kernel/debug/tracing/trace_pipe > test-2-trace.txt
===

Place this script in your BBB /home/debian folder, then as root, execute 
./trace.sh

Finally, I index the entire linux kernel using a variation of these 
instructions:

https://wiki.eclipse.org/HowTo_use_the_CDT_to_navigate_Linux_kernel_source

To speed things up, you must filter out all the code from other processor 
architectures and drivers you don’t use. 

Now I can ctrl click on any term to trace the flow I get from ftrace. For 
something this complex, I tend to diagram the flow with a mind map or something 
similar. The visual layout helps me understand the framework architecture. 

Regards,
John




> On Apr 6, 2016, at 5:45 PM, Rick Mann <rm...@latencyzero.com> wrote:
> 
> 
>> On Apr 6, 2016, at 16:53 , Peter Hurley <pe...@hurleysoftware.com> wrote:
>> 
>> If this is a latency problem, ftrace is probably your best bet, but
>> function_graph and the other tracers can induce even more latency.
> 
> Nothing so esoteric. I'm just trying to get the damn thing to work at all. 
> It's worked in previous kernels, but not in the latest. Seeing what code gets 
> executed will help a lot. But I'm currently stuck with the default 
> diagnostics available (e.g. "Unable to set hw params for playback: Invalid 
> argument" NOT HELPFUL).
> 
> In the past, when I spent so much time with printk, I was trying to 
> understand how all the modules worked together to actually configure and 
> drive the CODEC. I found that to be virtually impossible to do in any 
> comprehensive way, not already understanding it. Can't use printk() if you 
> don't know where to put it.
> 
> 
> -- 
> Rick Mann
> rm...@latencyzero.com
> 
> 
> -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to beagleboard+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to