Teach `debugger tracing stop` to pick a file name automatically.
This will make the tracing write its result to the first available
filename of [mojo_trace_000.json, mojo_trace_001.json, ...].
(we always had a 'default' set on the |file_name| parameter, but it
didn't actually work as the parameter was positional and hence required
by default)
Fixes domokit/devtools#13.
R=tonyg@chromium.org
Review URL: https://codereview.chromium.org/1184453002.
diff --git a/README.md b/README.md
index 7c42b85..d6a52d3 100644
--- a/README.md
+++ b/README.md
@@ -233,8 +233,8 @@
and retrieve the result:
```
-/devtools/common/debugger tracing start
-/devtools/common/debugger tracing stop result.json
+devtools/common/debugger tracing start
+devtools/common/debugger tracing stop [result.json]
```
The trace file can be then loaded using the trace viewer in Chrome available at
diff --git a/mojo/devtools/common/debugger b/mojo/devtools/common/debugger
index 4ff747f..6bca9fb 100755
--- a/mojo/devtools/common/debugger
+++ b/mojo/devtools/common/debugger
@@ -4,6 +4,7 @@
# found in the LICENSE file.
import argparse
+import os.path
import requests
import sys
@@ -24,7 +25,18 @@
def _tracing_stop(args):
"""Stops tracing and writes trace to file."""
- file_name = args.file_name
+ if args.file_name:
+ file_name = args.file_name
+ else:
+ for i in xrange(1000):
+ candidate_file_name = 'mojo_trace_%03d.json' % i
+ if not os.path.exists(candidate_file_name):
+ file_name = candidate_file_name
+ break
+ else:
+ print 'Failed to pick a name for the trace output file.'
+ return 1
+
trace = _send_request('stop_tracing').content
with open(file_name, "wb") as trace_file:
trace_file.write('{"traceEvents":[')
@@ -46,8 +58,8 @@
stop_tracing_parser = tracing_subparser.add_parser('stop',
help='stop tracing and retrieve the result')
- stop_tracing_parser.add_argument('file_name', type=str,
- default='mojo.trace')
+ stop_tracing_parser.add_argument('file_name', type=str, nargs='?',
+ help='name of the output file (optional)')
stop_tracing_parser.set_defaults(func=_tracing_stop)