summaryrefslogtreecommitdiff
path: root/rtemstoolkit/stacktraces.py
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2014-05-31 20:03:05 +1000
committerChris Johns <chrisj@rtems.org>2014-05-31 20:03:05 +1000
commitc04a84917a82caa06b8efc4f24d3b60ed8f05d78 (patch)
treebe2073222f07b90c80216fdb105f02fb1fdc5c0d /rtemstoolkit/stacktraces.py
parent5cdcde1ec2ccfa9dd88fadf55bbd18a220f2567f (diff)
tester: Correctly handle contro-c.
Add support to kill running tests if the user presses control-c.
Diffstat (limited to 'rtemstoolkit/stacktraces.py')
-rw-r--r--rtemstoolkit/stacktraces.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/rtemstoolkit/stacktraces.py b/rtemstoolkit/stacktraces.py
new file mode 100644
index 0000000..e589618
--- /dev/null
+++ b/rtemstoolkit/stacktraces.py
@@ -0,0 +1,43 @@
+#
+# RTEMS Tools Project (http://www.rtems.org/)
+# Copyright 2013-2014 Chris Johns (chrisj@rtems.org)
+# All rights reserved.
+#
+# This file is part of the RTEMS Tools package in 'rtems-tools'.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+import sys
+import traceback
+
+def trace():
+ code = []
+ for threadId, stack in sys._current_frames().items():
+ code.append("\n# thread-id: %s" % threadId)
+ for filename, lineno, name, line in traceback.extract_stack(stack):
+ code.append('file: "%s", line %d, in %s' % (filename, lineno, name))
+ if line:
+ code.append(" %s" % (line.strip()))
+ return '\n'.join(code)
+