| Index: breakpad.py
|
| diff --git a/breakpad.py b/breakpad.py
|
| index 6818c9e0e882986323d39bd4464d68da45dca7c3..7f2eab38791535a33014e77684677c38ba1bbe32 100644
|
| --- a/breakpad.py
|
| +++ b/breakpad.py
|
| @@ -13,10 +13,15 @@ import traceback
|
| import socket
|
| import sys
|
|
|
| +
|
| # Configure these values.
|
| -DEFAULT_URL = 'http://chromium-status.appspot.com/breakpad'
|
| +DEFAULT_URL = 'https://chromium-status.appspot.com/breakpad'
|
| +
|
| +_REGISTERED = False
|
| +
|
|
|
| def SendStack(last_tb, stack, url=None):
|
| + """Sends the stack trace to the breakpad server."""
|
| if not url:
|
| url = DEFAULT_URL
|
| print 'Sending crash report ...'
|
| @@ -26,6 +31,7 @@ def SendStack(last_tb, stack, url=None):
|
| 'stack': stack,
|
| 'user': getpass.getuser(),
|
| 'exception': last_tb,
|
| + 'host': socket.getfqdn(),
|
| }
|
| request = urllib.urlopen(url, urllib.urlencode(params))
|
| print request.read()
|
| @@ -35,6 +41,7 @@ def SendStack(last_tb, stack, url=None):
|
|
|
|
|
| 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)
|
| @@ -42,7 +49,19 @@ def CheckForException():
|
| SendStack(repr(last_value), ''.join(traceback.format_tb(last_tb)))
|
|
|
|
|
| +def Register():
|
| + """Registers the callback at exit. Calling it multiple times is no-op."""
|
| + global _REGISTERED
|
| + if _REGISTERED:
|
| + return
|
| + _REGISTERED = True
|
| + atexit.register(CheckForException)
|
| +
|
| +
|
| +# Skip unit tests and we don't want anything from non-googler.
|
| if (not 'test' in sys.modules['__main__'].__file__ and
|
| socket.getfqdn().endswith('.google.com')):
|
| - # Skip unit tests and we don't want anything from non-googler.
|
| - atexit.register(CheckForException)
|
| + Register()
|
| +
|
| +# Uncomment this line if you want to test it out.
|
| +#Register()
|
|
|