Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use startMethodTracing APIs on Android?

Tags:

android

trace

I have recently started working on an app which has both Java and native components. I am trying to generate trace information for both components using Debug.startMethodTracing("myapp") and Debug.startNativeTracing() alternately. However, both are behaving unexpectedly.

When I use Debug.startMethodTracing("myapp"), I can see a file /sdcard/myapp.trace being created but it is always empty no matter how long I run my app. When I use Debug.startNativeTracing() and start the emulator with the -trace <tracename> switch, I see a message saying "Trace started", but when I try to run my app, the emulator crashes.

Am I missing something obvious here? How do I debug this problem?

like image 656
341008 Avatar asked May 20 '10 05:05

341008


1 Answers

When I've had that happen to me, it's because I've had mismatched start/stop pairs. For example, if you start method tracing but never stop, I think Android simply never writes the buffered trace information out to a file. Similarly if you have an extra stop in the middle, or never start, etc, you're not going to get the desired results.

Other than that method tracing has worked fine for me.

Native tracing, on the other hand, appears to not be supported (still), since I get an error "Qemu trace files not supported yet" when I try to load the native trace results into traceview. (Any comment on that from Google?)

  • Kris
like image 160
Kris Giesing Avatar answered Sep 22 '22 19:09

Kris Giesing