Mercurial > public > mercurial-scm > hg
diff tests/test-debugcommands.t @ 20244:47d0843647d1
util: introduce util.debugstacktrace for showing a stack trace without crashing
This is often very handy when hacking/debugging.
Calling util.debugstacktrace('hey') from a place in hg will give something like:
hey at:
./hg:38 in <module>
/home/user/hgsrc/mercurial/dispatch.py:28 in run
/home/user/hgsrc/mercurial/dispatch.py:65 in dispatch
/home/user/hgsrc/mercurial/dispatch.py:88 in _runcatch
/home/user/hgsrc/mercurial/dispatch.py:740 in _dispatch
/home/user/hgsrc/mercurial/dispatch.py:514 in runcommand
/home/user/hgsrc/mercurial/dispatch.py:830 in _runcommand
/home/user/hgsrc/mercurial/dispatch.py:801 in checkargs
/home/user/hgsrc/mercurial/dispatch.py:737 in <lambda>
/home/user/hgsrc/mercurial/util.py:472 in check
...
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Sun, 12 Jan 2014 23:28:21 +0100 |
parents | 76e55914c303 |
children | 2b96073f3138 |
line wrap: on
line diff
--- a/tests/test-debugcommands.t Tue Jan 07 22:29:57 2014 +0100 +++ b/tests/test-debugcommands.t Sun Jan 12 23:28:21 2014 +0100 @@ -23,3 +23,25 @@ uncompressed data size (min/max/avg) : 43 / 43 / 43 full revision size (min/max/avg) : 44 / 44 / 44 delta size (min/max/avg) : 0 / 0 / 0 + + +Test internal debugstacktrace command + + $ cat > debugstacktrace.py << EOF + > from mercurial.util import debugstacktrace, dst, sys + > def f(): + > dst('hello world') + > def g(): + > f() + > debugstacktrace(skip=-5, f=sys.stdout) + > g() + > EOF + $ python debugstacktrace.py + hello world at: + debugstacktrace.py:7 in <module> + debugstacktrace.py:5 in g + debugstacktrace.py:3 in f + stacktrace at: + debugstacktrace.py:7 *in <module> (glob) + debugstacktrace.py:6 *in g (glob) + */util.py:* in debugstacktrace (glob)