| Index: breakpad.py
|
| diff --git a/breakpad.py b/breakpad.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..36ac138d12f1d775e601527f91cd99a985887e8f
|
| --- /dev/null
|
| +++ b/breakpad.py
|
| @@ -0,0 +1,39 @@
|
| +# Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""Breakpad for Python.
|
| +
|
| +Sends a notification when a process stops on an exception."""
|
| +
|
| +import atexit
|
| +import getpass
|
| +import urllib
|
| +import traceback
|
| +import sys
|
| +
|
| +
|
| +def SendStack(stack, url='http://chromium-status.appspot.com/breakpad'):
|
| + print 'Do you want to send a crash report [y/N]? ',
|
| + if sys.stdin.read(1).lower() == 'y':
|
| + try:
|
| + params = {
|
| + 'args': sys.argv,
|
| + 'stack': stack,
|
| + 'user': getpass.getuser(),
|
| + }
|
| + request = urllib.urlopen(url, urllib.urlencode(params))
|
| + print request.read()
|
| + request.close()
|
| + except IOError:
|
| + print('There was a failure while trying to send the stack trace. Too bad.')
|
| +
|
| +
|
| +@atexit.register
|
| +def CheckForException():
|
| + if 'test' in sys.modules['__main__'].__file__:
|
| + # Probably a unit test.
|
| + return
|
| + last_tb = getattr(sys, 'last_traceback', None)
|
| + if last_tb:
|
| + SendStack(''.join(traceback.format_tb(last_tb)))
|
|
|