JSON and Text Format DescriptionΒΆ

Both formats are exported by serializing protobuf messages, each on a new line. First, all collected events are processed. Then strings are serialized, followed by stdout, stderr streams if any, followed by thread names.

Output layout:

{Event #1}
{Event #2}
...
{Event #N}
{Strings}
{Streams}
{Threads}

For easier grepping of JSON output, the --line-by-line switch may be used to force manual splitting of strings, streams and thread names data.

Example line split: ./nsys export --export-json --line-by-line sample.qdrep -- -

{"type":"String","id":"3720","value":"Process 14944 was launched by the profiler"}
{"type":"String","id":"3721","value":"Profiling has started."}
{"type":"String","id":"3722","value":"Profiler attached to the process."}
{"type":"String","id":"3723","value":"Profiling has stopped."}
{"type":"ThreadName","globalTid":"72057844756653436","nameId":"14","priority":"10"}
{"type":"ThreadName","globalTid":"72057844756657940","nameId":"15","priority":"10"}
{"type":"ThreadName","globalTid":"72057844756654400","nameId":"24","priority":"10"}

Compare with: ./nsys export --export-json sample.qdrep -- -

{"data":["[Unknown]","[Unknown kernel module]","[Max depth]","[Broken backtraces]","[Called from Java]","QnxKernelTrace","mm_","task_submit","class_id","syncpt_id","syncpt_thresh","pid","tid","FTrace","[NSys]","[NSys Comms]", "..." ,"Process 14944 was launched by the profiler","Profiling has started.","Profiler attached to the process.","Profiling has stopped."]}
{"data":[{"nameIdx":"14","priority":"10","globalTid":"72057844756653436"},{"nameIdx":"15","priority":"10","globalTid":"72057844756657940"},{"nameIdx":"24","priority":"10","globalTid":"72057844756654400"}]}

Note, that only last few lines are shown here for clarity.