Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -512,6 +512,87 @@ If you provide an ELF image via the `--image`_ option, then the output
will contain the symbolic names of functions in the program. If not,
then it will contain hex addresses.

tarmac-chromejson
-----------------

``tarmac-chromejson`` writes out profiling data derived from one or more
trace files as `Chromium's Trace Event Format`_, suitable for timeline viewers that
understand this format.

.. _Chromium's Trace Event Format: https://chromium.googlesource.com/catapult/+/HEAD/docs/trace-event-format.md

The command-line syntax of ``tarmac-chromejson`` looks like this:
``tarmac-chromejson`` [ *options* ] *trace-file-name*...

All the options in `Common functionality`_ are supported. This tool
also recognizes the following additional options:

``-o`` *filename* or ``--output=``\ *filename*
Tells the tool to write its output to the specified file, instead of
to standard output.

``--pid`` *pid*
Tells the tool which Chrome trace process id to assign to generated
events. The default is 1.

``--tid`` *tid*
Tells the tool which Chrome trace thread id to assign to generated
events. The default is 1. If multiple trace files are provided, they
are assigned consecutive thread ids starting from this value.

When run over trace files, ``tarmac-chromejson`` produces a JSON object
whose ``traceEvents`` array contains one complete event for each
function activation identified in the traces. Each event's timestamp
and duration come from the Tarmac timestamps used by the index.

An example of the event structure used for complete events is the following:

.. code-block:: none

{
"name": "quicksort",
"cat": "function",
"ph": "X",
"pid": 1,
"tid": 2,
"ts": 1234,
"dur": 56,
"args": {
"pc": "0x8038",
"line": 177
}
}

while metadata events look like:

.. code-block:: none

{
"ph": "M",
"name": "thread_name",
"pid": 1,
"tid": 2,
"args": {
"name": "CPU 1"
}
}

where

* ``name`` is the event name
* ``cat`` is the Category (e.g. ``"function"``)
* ``ph`` is the event type (e.g. ``"M"`` or ``"X"``)
* ``pid`` is the process ID
* ``tid`` is the Thread ID
* ``ts`` is the timestamp
* ``dur`` is the duration of the event
* ``args`` is arbitrary event-specific metadata

If you provide an ELF image via the `--image`_ option, then the output
will contain the symbolic names of functions in the program. If more
than one trace file is provided, the same image is used for all of
them. If no image is provided, the output will contain hex addresses.

tarmac-vcd
----------

Expand Down
21 changes: 21 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,27 @@ add_test(NAME flamegraph-symbols
${CMAKE_BINARY_DIR}/tarmac-flamegraph --index quicksort.tarmac.index --image ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.elf ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.tarmac
)

# Tests of Chrome trace JSON output on the same quicksort trace.
# Expected output, with and without symbol annotations from the ELF
# file, is in chrome-quicksort-*.ref.
add_test(NAME chrome-no-symbols
COMMAND ${test_driver_cmd}
--tempfile quicksort.tarmac.index
--compare reffile:${CMAKE_CURRENT_SOURCE_DIR}/chrome-quicksort-addr.ref stdout
${CMAKE_BINARY_DIR}/tarmac-chromejson --index quicksort.tarmac.index ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.tarmac
)
add_test(NAME chrome-symbols
COMMAND ${test_driver_cmd}
--tempfile quicksort.tarmac.index
--compare reffile:${CMAKE_CURRENT_SOURCE_DIR}/chrome-quicksort-symbols.ref stdout
${CMAKE_BINARY_DIR}/tarmac-chromejson --index quicksort.tarmac.index --image ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.elf ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.tarmac
)
add_test(NAME chrome-multi-trace-symbols
COMMAND ${test_driver_cmd}
--compare reffile:${CMAKE_CURRENT_SOURCE_DIR}/chrome-quicksort-multi-symbols.ref stdout
${CMAKE_BINARY_DIR}/tarmac-chrome --image ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.elf ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.tarmac ${CMAKE_CURRENT_SOURCE_DIR}/quicksort.tarmac
)

# Tests of tarmac-profile, with and without ELF symbol annotations.
# Same input trace file as the above tests; expected output is in
# profile-quicksort-*.ref.
Expand Down
35 changes: 35 additions & 0 deletions tests/chrome-quicksort-addr.ref
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"traceEvents": [
{"ph":"M","name":"process_name","pid":1,"tid":1,"args":{"name":"Tarmac trace"}},
{"ph":"M","name":"thread_name","pid":1,"tid":1,"args":{"name":"CPU 0"}},
{"ph":"X","cat":"function","name":"0x8000","pid":1,"tid":1,"ts":1,"dur":2043,"args":{"pc":"0x8000","line":157}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":10,"dur":2017,"args":{"pc":"0x8038","line":177}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":367,"dur":1401,"args":{"pc":"0x8038","line":860}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":581,"dur":296,"args":{"pc":"0x8038","line":1265}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":656,"dur":76,"args":{"pc":"0x8038","line":1411}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":686,"dur":6,"args":{"pc":"0x8038","line":1472}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":719,"dur":6,"args":{"pc":"0x8038","line":1546}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":781,"dur":89,"args":{"pc":"0x8038","line":1681}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":821,"dur":42,"args":{"pc":"0x8038","line":1762}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":850,"dur":6,"args":{"pc":"0x8038","line":1822}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1050,"dur":520,"args":{"pc":"0x8038","line":2229}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1178,"dur":385,"args":{"pc":"0x8038","line":2478}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1275,"dur":156,"args":{"pc":"0x8038","line":2666}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1337,"dur":87,"args":{"pc":"0x8038","line":2789}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1378,"dur":6,"args":{"pc":"0x8038","line":2871}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1411,"dur":6,"args":{"pc":"0x8038","line":2945}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1480,"dur":76,"args":{"pc":"0x8038","line":3099}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1510,"dur":6,"args":{"pc":"0x8038","line":3160}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1543,"dur":6,"args":{"pc":"0x8038","line":3234}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1616,"dur":6,"args":{"pc":"0x8038","line":3399}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1677,"dur":84,"args":{"pc":"0x8038","line":3526}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1717,"dur":37,"args":{"pc":"0x8038","line":3607}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1741,"dur":6,"args":{"pc":"0x8038","line":3657}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1825,"dur":6,"args":{"pc":"0x8038","line":3843}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1891,"dur":129,"args":{"pc":"0x8038","line":3980}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1927,"dur":6,"args":{"pc":"0x8038","line":4052}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":1971,"dur":42,"args":{"pc":"0x8038","line":4147}},
{"ph":"X","cat":"function","name":"0x8038","pid":1,"tid":1,"ts":2000,"dur":6,"args":{"pc":"0x8038","line":4207}},
{"ph":"X","cat":"function","name":"0x80ec","pid":1,"tid":1,"ts":2030,"dur":3,"args":{"pc":"0x80ec","line":4290}}
]
}
65 changes: 65 additions & 0 deletions tests/chrome-quicksort-multi-symbols.ref
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"traceEvents": [
{"ph":"M","name":"process_name","pid":1,"tid":1,"args":{"name":"Tarmac trace"}},
{"ph":"M","name":"thread_name","pid":1,"tid":1,"args":{"name":"quicksort.tarmac"}},
{"ph":"M","name":"thread_name","pid":1,"tid":2,"args":{"name":"quicksort.tarmac"}},
{"ph":"X","cat":"function","name":"_start","pid":1,"tid":1,"ts":1,"dur":2043,"args":{"pc":"0x8000","line":157}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":10,"dur":2017,"args":{"pc":"0x8038","line":177}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":367,"dur":1401,"args":{"pc":"0x8038","line":860}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":581,"dur":296,"args":{"pc":"0x8038","line":1265}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":656,"dur":76,"args":{"pc":"0x8038","line":1411}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":686,"dur":6,"args":{"pc":"0x8038","line":1472}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":719,"dur":6,"args":{"pc":"0x8038","line":1546}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":781,"dur":89,"args":{"pc":"0x8038","line":1681}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":821,"dur":42,"args":{"pc":"0x8038","line":1762}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":850,"dur":6,"args":{"pc":"0x8038","line":1822}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1050,"dur":520,"args":{"pc":"0x8038","line":2229}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1178,"dur":385,"args":{"pc":"0x8038","line":2478}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1275,"dur":156,"args":{"pc":"0x8038","line":2666}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1337,"dur":87,"args":{"pc":"0x8038","line":2789}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1378,"dur":6,"args":{"pc":"0x8038","line":2871}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1411,"dur":6,"args":{"pc":"0x8038","line":2945}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1480,"dur":76,"args":{"pc":"0x8038","line":3099}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1510,"dur":6,"args":{"pc":"0x8038","line":3160}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1543,"dur":6,"args":{"pc":"0x8038","line":3234}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1616,"dur":6,"args":{"pc":"0x8038","line":3399}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1677,"dur":84,"args":{"pc":"0x8038","line":3526}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1717,"dur":37,"args":{"pc":"0x8038","line":3607}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1741,"dur":6,"args":{"pc":"0x8038","line":3657}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1825,"dur":6,"args":{"pc":"0x8038","line":3843}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1891,"dur":129,"args":{"pc":"0x8038","line":3980}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1927,"dur":6,"args":{"pc":"0x8038","line":4052}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1971,"dur":42,"args":{"pc":"0x8038","line":4147}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":2000,"dur":6,"args":{"pc":"0x8038","line":4207}},
{"ph":"X","cat":"function","name":"sys_write0","pid":1,"tid":1,"ts":2030,"dur":3,"args":{"pc":"0x80ec","line":4290}},
{"ph":"X","cat":"function","name":"_start","pid":1,"tid":2,"ts":1,"dur":2043,"args":{"pc":"0x8000","line":157}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":10,"dur":2017,"args":{"pc":"0x8038","line":177}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":367,"dur":1401,"args":{"pc":"0x8038","line":860}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":581,"dur":296,"args":{"pc":"0x8038","line":1265}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":656,"dur":76,"args":{"pc":"0x8038","line":1411}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":686,"dur":6,"args":{"pc":"0x8038","line":1472}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":719,"dur":6,"args":{"pc":"0x8038","line":1546}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":781,"dur":89,"args":{"pc":"0x8038","line":1681}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":821,"dur":42,"args":{"pc":"0x8038","line":1762}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":850,"dur":6,"args":{"pc":"0x8038","line":1822}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1050,"dur":520,"args":{"pc":"0x8038","line":2229}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1178,"dur":385,"args":{"pc":"0x8038","line":2478}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1275,"dur":156,"args":{"pc":"0x8038","line":2666}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1337,"dur":87,"args":{"pc":"0x8038","line":2789}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1378,"dur":6,"args":{"pc":"0x8038","line":2871}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1411,"dur":6,"args":{"pc":"0x8038","line":2945}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1480,"dur":76,"args":{"pc":"0x8038","line":3099}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1510,"dur":6,"args":{"pc":"0x8038","line":3160}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1543,"dur":6,"args":{"pc":"0x8038","line":3234}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1616,"dur":6,"args":{"pc":"0x8038","line":3399}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1677,"dur":84,"args":{"pc":"0x8038","line":3526}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1717,"dur":37,"args":{"pc":"0x8038","line":3607}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1741,"dur":6,"args":{"pc":"0x8038","line":3657}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1825,"dur":6,"args":{"pc":"0x8038","line":3843}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1891,"dur":129,"args":{"pc":"0x8038","line":3980}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1927,"dur":6,"args":{"pc":"0x8038","line":4052}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":1971,"dur":42,"args":{"pc":"0x8038","line":4147}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":2,"ts":2000,"dur":6,"args":{"pc":"0x8038","line":4207}},
{"ph":"X","cat":"function","name":"sys_write0","pid":1,"tid":2,"ts":2030,"dur":3,"args":{"pc":"0x80ec","line":4290}}
]
}
35 changes: 35 additions & 0 deletions tests/chrome-quicksort-symbols.ref
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"traceEvents": [
{"ph":"M","name":"process_name","pid":1,"tid":1,"args":{"name":"Tarmac trace"}},
{"ph":"M","name":"thread_name","pid":1,"tid":1,"args":{"name":"CPU 0"}},
{"ph":"X","cat":"function","name":"_start","pid":1,"tid":1,"ts":1,"dur":2043,"args":{"pc":"0x8000","line":157}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":10,"dur":2017,"args":{"pc":"0x8038","line":177}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":367,"dur":1401,"args":{"pc":"0x8038","line":860}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":581,"dur":296,"args":{"pc":"0x8038","line":1265}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":656,"dur":76,"args":{"pc":"0x8038","line":1411}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":686,"dur":6,"args":{"pc":"0x8038","line":1472}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":719,"dur":6,"args":{"pc":"0x8038","line":1546}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":781,"dur":89,"args":{"pc":"0x8038","line":1681}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":821,"dur":42,"args":{"pc":"0x8038","line":1762}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":850,"dur":6,"args":{"pc":"0x8038","line":1822}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1050,"dur":520,"args":{"pc":"0x8038","line":2229}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1178,"dur":385,"args":{"pc":"0x8038","line":2478}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1275,"dur":156,"args":{"pc":"0x8038","line":2666}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1337,"dur":87,"args":{"pc":"0x8038","line":2789}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1378,"dur":6,"args":{"pc":"0x8038","line":2871}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1411,"dur":6,"args":{"pc":"0x8038","line":2945}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1480,"dur":76,"args":{"pc":"0x8038","line":3099}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1510,"dur":6,"args":{"pc":"0x8038","line":3160}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1543,"dur":6,"args":{"pc":"0x8038","line":3234}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1616,"dur":6,"args":{"pc":"0x8038","line":3399}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1677,"dur":84,"args":{"pc":"0x8038","line":3526}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1717,"dur":37,"args":{"pc":"0x8038","line":3607}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1741,"dur":6,"args":{"pc":"0x8038","line":3657}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1825,"dur":6,"args":{"pc":"0x8038","line":3843}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1891,"dur":129,"args":{"pc":"0x8038","line":3980}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1927,"dur":6,"args":{"pc":"0x8038","line":4052}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":1971,"dur":42,"args":{"pc":"0x8038","line":4147}},
{"ph":"X","cat":"function","name":"quicksort","pid":1,"tid":1,"ts":2000,"dur":6,"args":{"pc":"0x8038","line":4207}},
{"ph":"X","cat":"function","name":"sys_write0","pid":1,"tid":1,"ts":2030,"dur":3,"args":{"pc":"0x80ec","line":4290}}
]
}
5 changes: 4 additions & 1 deletion tools/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ standard_target_configuration(tarmac-callinfo)
add_executable(tarmac-calltree calltree.cpp ${EXTRA_FILES})
standard_target_configuration(tarmac-calltree)

add_executable(tarmac-chromejson chrome.cpp ${EXTRA_FILES})
standard_target_configuration(tarmac-chromejson)

add_executable(tarmac-flamegraph flamegraph.cpp ${EXTRA_FILES})
standard_target_configuration(tarmac-flamegraph)

Expand All @@ -38,7 +41,7 @@ add_executable(tarmac-vcd vcdwriter.cpp vcd.cpp ${EXTRA_FILES})
standard_target_configuration(tarmac-vcd)

install(TARGETS
tarmac-callinfo tarmac-calltree tarmac-flamegraph tarmac-profile
tarmac-callinfo tarmac-calltree tarmac-chromejson tarmac-flamegraph tarmac-profile
tarmac-vcd
EXPORT ${TTU_targets_export_name}
RUNTIME)
Expand Down
Loading