Skip to content

Commit

Permalink
Send googler profiling data.
Browse files Browse the repository at this point in the history
BUG=
TEST=

Review URL: http://codereview.chromium.org/6904055

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@83507 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
[email protected] committed Apr 29, 2011
1 parent eaab784 commit 7ca049b
Showing 1 changed file with 41 additions and 11 deletions.
52 changes: 41 additions & 11 deletions breakpad.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,32 @@
import atexit
import getpass
import os
import urllib
import traceback
import socket
import sys
import time
import traceback
import urllib
import urllib2


# Configure these values.
DEFAULT_URL = 'https://chromium-status.appspot.com/breakpad'
DEFAULT_URL = 'https://chromium-status.appspot.com'

_REGISTERED = False

_TIME_STARTED = time.time()


def post(url, params):
"""HTTP POST with timeout when it's supported."""
kwargs = {}
if (sys.version_info[0] * 10 + sys.version_info[1]) >= 26:
kwargs['timeout'] = 4
request = urllib2.urlopen(url, urllib.urlencode(params), **kwargs)
out = request.read()
request.close()
return out


def FormatException(e):
"""Returns a human readable form of an exception.
Expand Down Expand Up @@ -58,7 +73,7 @@ def FormatException(e):
def SendStack(last_tb, stack, url=None, maxlen=50):
"""Sends the stack trace to the breakpad server."""
if not url:
url = DEFAULT_URL
url = DEFAULT_URL + '/breakpad'
print 'Sending crash report ...'
try:
params = {
Expand All @@ -73,20 +88,35 @@ def SendStack(last_tb, stack, url=None, maxlen=50):
# pylint: disable=W0702
print('\n'.join(' %s: %s' % (k, v[0:maxlen])
for k, v in params.iteritems()))
request = urllib.urlopen(url, urllib.urlencode(params))
print(request.read())
request.close()
print(post(url, params))
except IOError:
print('There was a failure while trying to send the stack trace. Too bad.')


def SendProfiling(url=None):
try:
if not url:
url = DEFAULT_URL + '/profiling'
params = {
'argv': ' '.join(sys.argv),
'duration': time.time() - _TIME_STARTED,
'platform': sys.platform,
}
post(url, params)
except IOError:
pass


def CheckForException():
"""Runs at exit. Look if there was an exception active."""
last_value = getattr(sys, 'last_value', None)
if last_value and not isinstance(last_value, KeyboardInterrupt):
last_tb = getattr(sys, 'last_traceback', None)
if last_tb:
SendStack(last_value, ''.join(traceback.format_tb(last_tb)))
if last_value:
if not isinstance(last_value, KeyboardInterrupt):
last_tb = getattr(sys, 'last_traceback', None)
if last_tb:
SendStack(last_value, ''.join(traceback.format_tb(last_tb)))
else:
SendProfiling()


def Register():
Expand Down

0 comments on commit 7ca049b

Please sign in to comment.