blob: 7d5f070b5979841571750debc294e7af3cb8892a [file] [log] [blame]
page.title=Method Trace
parent.title=Android Monitor
parent.link=android-monitor.html
meta.tags="android, performance, profiling, tools, monitor"
page.tags="android", "performance", "profiling", "tools", "monitor"
page.metaDescription=Use the CPU Monitor to perform a method trace on your app. View call stack and timing information in the method trace display.
page.image=tools/help/thumbnails/am_methodtrace.png
page.article=true
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#display">Understanding the Method Trace Display</a></li>
<li><a href="#trace">Performing a Method Trace in the CPU Monitor</a></li>
<li><a href="#viewtrace">Viewing a Saved Method Trace</a></li>
<li><a href="#sorttrace">Sorting Method Trace Data</a></li>
<li><a href="#trace-files">Working with Method Trace Files</a></li>
</ol>
</div>
</div>
<p>
You can start a method trace from the CPU Monitor. It lets you view the call stack and timing
information for your app. This information can help you optimize and debug your app.
</p>
<h2 id="display">
Understanding the Method Trace Display
</h2>
<p>
The method trace looks similar to the following figure:
</p>
<img src="{@docRoot}images/tools/am-methodtrace.png" alt="Method Trace" />
<p></p>
<p>The display shows the following information:</p>
<table>
<tr>
<th scope="col">Field</th>
<th scope="col">Description</th>
</tr>
<tr>
<td><strong>Name</strong></td>
<td>The name of the method.</td>
</tr>
<tr>
<td><strong>Invocation Count</strong></td>
<td>How many times the method was called.</td>
</tr>
<tr>
<td><strong>Inclusive Time (microseconds)</strong></td>
<td>Time spent in the method and all of its children, either wall clock or thread time,
depending on your selection in the <strong>x-axis</strong> menu.</td>
</tr>
<tr>
<td><strong>Exclusive Time (microseconds)</strong></td>
<td>Time spent just in the method (excluding time spent in its children), either wall clock
or thread time, depending on your selection in the <strong>x-axis</strong> menu.</td>
</tr>
</table>
<p class="note"><strong>Note:</strong> Running the method trace significantly affects CPU timings.
Use the method trace to understand the flow of the program, but not for performance timings.</p>
<h2 id="trace">
Performing a Method Trace in the CPU Monitor
</h2>
<p>
To perform a method trace:
</p>
<ol>
<li>
<a href="{@docRoot}tools/help/am-cpu.html#running">Display a running app in the CPU
Monitor</a>.
</li>
<li>Start a trace by clicking Start Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
style="vertical-align:sub;margin:0;height:17px" alt="Start Method Tracing icon" /> to
select it.
</li>
<li>To stop the trace, click Stop Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
style="vertical-align:sub;margin:0;height:17px" alt="Stop Method Tracing icon" /> to
deselect it.
</li>
<p>
The method trace appears in the Code Editor area.
</p>
<p>
Android Studio creates the method trace file
with the filename <code><em>package_yyyy.mm.dd_hh.mm.ss</em>.trace</code>
using the activity package (or project) name, year, month, day, hour, minute, and second of
the capture, for example,
<code>com.android.calc_2015.11.17_14.58.48.trace</code>.
</p>
<li>Specify display options:
<ul>
<li>Select a <strong>Thread</strong>.
</li>
<li>Select an <strong>x-axis</strong> time for the graphic and the method list:
</li>
<ul>
<li>
<strong>Wall Clock Time</strong> - Total CPU time elapsed between the method call and
return.
</li>
<li>
<strong>Thread Time</strong> - Total time during which the JRE scheduled the
thread during call processing. Its less than or equal to the Wall Clock Time: less if
the JRE interrupted the thread, and equal if it didnt.
The thread might not run continuously; when its not executing, that time is excluded.
If threads are interrupted often and its not by design, the interruptions affect app
performance. However, an example of a by-design use is synchronous operations that take
a long time, such as file transfers and reads from disk, where the method could be the
asynchronous wrapper for the synchronous reader.
</li>
</ul>
<li>
Optionally select <strong>Color by inclusive time</strong>.
</li>
</ul>
<p>
The graphic represents the wall clock or thread time for each method. Hover the cursor
over the display to receive information about the method. This information also appears
in the table.
</p>
</ol>
<h2 id="viewtrace">
Viewing a Saved Method Trace
</h2>
<p>
After you do a method trace, Android Studio automatically stores it so you can view it
again.</p>
<p>To examine a saved method trace:
</p>
<ol>
<li>Click
<img src="{@docRoot}images/tools/am-icaptures.png"
style="vertical-align:sub;margin:0;height:17px"
alt="Captures icon" /> in the main window.
</li>
<p>Or select <strong>View</strong> > <strong>Tools Windows</strong> >
<strong>Captures</strong>.</p>
<p>
The <em>Captures</em> window appears.
</p>
<li>Open the <strong>Methods Tracing</strong> folder.
</li>
<li>Double-click the file to view it.
</li>
</ol>
<h2 id="sorttrace">
Sorting Method Trace Data
</h2>
<p>
You can sort the data by method name, count, inclusive time, and exclusive
time.</p>
<p>To sort method trace data:</p>
<ul>
<li>Click a column heading to sort the table by ascending or descending order.
</li>
</ul>
<h2 id="trace-files">Working with Method Trace Files</h2>
<p>You can rename, locate, and delete a method trace file from within Android
Studio.</p>
<h3 id="renametrace">
Renaming a method trace file
</h3>
<p>
Rename a method trace file from within Android Studio so it
continues to appear in the <em>Captures</em> window.</p>
<p>To rename a method trace file:
</p>
<ol>
<li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>.
</li>
<li>In the dialog, specify the name of the file and click <strong>OK</strong>.
</li>
</ol>
<h3 id="locatetrace">
Locating a method trace file on disk
</h3>
<p>
You can quickly discover where Android Studio stored method trace files on
disk.</p>
<p>To locate a method trace file on disk:
</p>
<ul>
<li>In the <em>Captures</em> window, right-click a method trace file and
select <strong>Show</strong> or <strong>Reveal</strong>.
</li>
<p>
Android Studio opens an operating system file browser displaying the location where the file
resides.
</p>
</ul>
<p class="note">
<strong>Note:</strong> If you move a method trace file, Android Studio no longer displays the file
in the <em>Captures</em> window. To display it, use <strong>File</strong> &gt;
<strong>Open</strong>. Also, rename a file from the <em>Captures</em>
window and not in the operating system file browser.
</p>
<h3 id="deletetrace">
Deleting a method trace file
</h3>
<p>
To delete a method trace file:
</p>
<ul>
<li>In the <em>Captures</em> window, right-click a method trace file and select
<strong>Delete</strong>.
</li>
</ul>
<p>
Android Studio deletes the file from the <em>Captures</em> dialog and from disk.
</p>