Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Side by Side Diff: build/android/tombstones.py

Issue 1670223002: Android's stack script: Make --output-dir / CHROMIUM_OUTPUT_DIR mandatory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@output-dir-stack
Patch Set: more freom prev cl Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 # 6 #
7 # Find the most recent tombstone file(s) on all connected devices 7 # Find the most recent tombstone file(s) on all connected devices
8 # and prints their stacks. 8 # and prints their stacks.
9 # 9 #
10 # Assumes tombstone file was created with current symbols. 10 # Assumes tombstone file was created with current symbols.
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 found_abi = re.search('ABI: \'(.+?)\'', line) 123 found_abi = re.search('ABI: \'(.+?)\'', line)
124 if found_abi: 124 if found_abi:
125 device_abi = found_abi.group(1) 125 device_abi = found_abi.group(1)
126 arch = _DeviceAbiToArch(device_abi) 126 arch = _DeviceAbiToArch(device_abi)
127 if not arch: 127 if not arch:
128 return 128 return
129 129
130 stack_tool = os.path.join(os.path.dirname(__file__), '..', '..', 130 stack_tool = os.path.join(os.path.dirname(__file__), '..', '..',
131 'third_party', 'android_platform', 'development', 131 'third_party', 'android_platform', 'development',
132 'scripts', 'stack') 132 'scripts', 'stack')
133 proc = subprocess.Popen([stack_tool, '--arch', arch], stdin=subprocess.PIPE, 133 cmd = [stack_tool, '--arch', arch, '--output-directory',
134 stdout=subprocess.PIPE) 134 constants.GetOutDirectory()]
135 proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
135 output = proc.communicate(input='\n'.join(tombstone_data))[0] 136 output = proc.communicate(input='\n'.join(tombstone_data))[0]
136 for line in output.split('\n'): 137 for line in output.split('\n'):
137 if not include_stack and 'Stack Data:' in line: 138 if not include_stack and 'Stack Data:' in line:
138 break 139 break
139 yield line 140 yield line
140 141
141 142
142 def _ResolveTombstone(tombstone): 143 def _ResolveTombstone(tombstone):
143 lines = [] 144 lines = []
144 lines += [tombstone['file'] + ' created on ' + str(tombstone['time']) + 145 lines += [tombstone['file'] + ' created on ' + str(tombstone['time']) +
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 options, _ = parser.parse_args() 244 options, _ = parser.parse_args()
244 245
245 devil_chromium.Initialize() 246 devil_chromium.Initialize()
246 247
247 blacklist = (device_blacklist.Blacklist(options.blacklist_file) 248 blacklist = (device_blacklist.Blacklist(options.blacklist_file)
248 if options.blacklist_file 249 if options.blacklist_file
249 else None) 250 else None)
250 251
251 if options.output_directory: 252 if options.output_directory:
252 constants.SetOutputDirectory(options.output_directory) 253 constants.SetOutputDirectory(options.output_directory)
254 # Do an up-front test that the output directory is known.
255 constants.CheckOutputDirectory()
253 256
254 if options.device: 257 if options.device:
255 devices = [device_utils.DeviceUtils(options.device)] 258 devices = [device_utils.DeviceUtils(options.device)]
256 else: 259 else:
257 devices = device_utils.DeviceUtils.HealthyDevices(blacklist) 260 devices = device_utils.DeviceUtils.HealthyDevices(blacklist)
258 261
259 # This must be done serially because strptime can hit a race condition if 262 # This must be done serially because strptime can hit a race condition if
260 # used for the first time in a multithreaded environment. 263 # used for the first time in a multithreaded environment.
261 # http://bugs.python.org/issue7980 264 # http://bugs.python.org/issue7980
262 tombstones = [] 265 tombstones = []
263 for device in devices: 266 for device in devices:
264 tombstones += _GetTombstonesForDevice(device, options) 267 tombstones += _GetTombstonesForDevice(device, options)
265 268
266 _ResolveTombstones(options.jobs, tombstones) 269 _ResolveTombstones(options.jobs, tombstones)
267 270
268 271
269 if __name__ == '__main__': 272 if __name__ == '__main__':
270 sys.exit(main()) 273 sys.exit(main())
OLDNEW
« no previous file with comments | « build/android/pylib/constants/__init__.py ('k') | third_party/android_platform/development/scripts/stack » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698