diff options
author | anatoly techtonik <techtonik@gmail.com> | 2013-02-03 17:01:13 (GMT) |
---|---|---|
committer | anatoly techtonik <techtonik@gmail.com> | 2013-02-03 17:01:13 (GMT) |
commit | 0f1fd3e8bbfc8a4d9484a62efbe7952a0602be31 (patch) | |
tree | b0d5cc9dc8cfb83d2b0bafde62e61c3dcd432ab6 | |
parent | 9eb5708331e848fe37b63578ece26b1af278b3f7 (diff) | |
download | SCons-0f1fd3e8bbfc8a4d9484a62efbe7952a0602be31.zip SCons-0f1fd3e8bbfc8a4d9484a62efbe7952a0602be31.tar.gz SCons-0f1fd3e8bbfc8a4d9484a62efbe7952a0602be31.tar.bz2 |
Make Debug.caller_stack() return full stack.
Previously it required to specify all needed levels as parameters,
which is not practical. Now it return list of filename:line(function)
strings starting from the root one.
-rw-r--r-- | src/engine/SCons/Debug.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/engine/SCons/Debug.py b/src/engine/SCons/Debug.py index 85c0ec8..1c0c638 100644 --- a/src/engine/SCons/Debug.py +++ b/src/engine/SCons/Debug.py @@ -109,14 +109,15 @@ else: return res[4] # returns caller's stack -def caller_stack(*backlist): +def caller_stack(): import traceback - if not backlist: - backlist = [0] + tb = traceback.extract_stack() + # strip itself and the caller from the output + tb = tb[:-2] result = [] - for back in backlist: - tb = traceback.extract_stack(limit=3+back) - key = tb[0][:3] + for back in tb: + # (filename, line number, function name, text) + key = back[:3] result.append('%s:%d(%s)' % func_shorten(key)) return result |