Index: components/tracing/docs/heap_profiler.md |
diff --git a/components/tracing/docs/heap_profiler.md b/components/tracing/docs/heap_profiler.md |
index bb46dc9bd834f2707683cbc3fe985b9a55b3c14f..18d1b44bd72a5e7c0d0d9db33c06c4125aaa3eed 100644 |
--- a/components/tracing/docs/heap_profiler.md |
+++ b/components/tracing/docs/heap_profiler.md |
@@ -33,6 +33,60 @@ intergrated with the chrome://tracing ecosystem. |
[m-purple]: https://storage.googleapis.com/chromium-docs.appspot.com/d7bdf4d16204c293688be2e5a0bcb2bf463dbbc3 |
[cells-heap-dump]: https://storage.googleapis.com/chromium-docs.appspot.com/a24d80d6a08da088e2e9c8b2b64daa215be4dacb |
+### Native stack traces |
+ |
+By default heap profiling collects pseudo allocation traces, which are based |
+on trace events. I.e. frames in allocation traces correspond to trace events |
+that were active at the time of allocations, and are not real function names. |
+However, you can build a special Linux / Android build that will collect |
+real C/C++ stack traces. |
+ |
+ 1. Build with the following GN flags: |
+ |
+ Linux |
+ |
+ enable_profiling = true |
Primiano Tucci (use gerrit)
2016/06/30 14:45:47
Should we suggest also enable_full_stack_frames_f
|
+ |
+ |
+ Android |
+ |
+ arm_use_thumb = false |
+ enable_profiling = true |
+ |
+ 2. Start Chrome with `--enable-heap-profiling=native` switch (notice |
+ `=native` part). |
+ |
+ On Android use the command line tool before starting the app: |
+ |
+ build/android/adb_chrome_public_command_line --enable-heap-profiling=native |
+ |
+ (run the tool with an empty argument `''` to clear the command line) |
+ |
+ 3. Grab a [MemoryInfra][memory-infra] trace. You don't need any other |
+ categories besides `memory-infra`. |
+ |
+ 4. Save the grabbed trace file. This step is needed because freshly |
+ taken trace file contains raw addresses (which look like `pc:dcf5dbf8`) |
+ instead of function names, and needs to be symbolized. |
+ |
+ 4. Symbolize the trace file. During symbolization addresses are resolved to |
+ the corresponding function names and trace file is rewritten (but a backup |
+ is saved with `.BACKUP` extension). |
+ |
+ Linux |
+ |
+ third_party/catapult/tracing/bin/symbolize_trace <trace file> |
+ |
+ Android |
+ |
+ third_party/catapult/tracing/bin/symbolize_trace --output-directory out/Release <trace file> |
+ |
+ (note `--output-directory` and make sure it's right for your setup) |
Primiano Tucci (use gerrit)
2016/06/30 14:45:47
I think this note is really redundant :)
|
+ |
+ 5. Load the trace file in `chrome://tracing`. Locate a purple ![M][m-purple] |
+ dot, and continue from step *3* from the instructions above. Native stack |
+ traces will be shown in the _Heap Details_ pane. |
+ |
## Heap Details |
The heap details view contains a tree that represents the heap. The size of the |