Mercurial > hg
comparison contrib/showstack.py @ 26123:bdac264e5ed4
contrib: add showstack extension
This allows getting a Python stack trace at any time on Unix by
hitting Ctrl-\ (or Ctrl-T on BSDs). Useful for debugging mysterious
hangs on the fly. Sample output:
$ hg log -k nosuchmessage
^\
File "/home/mpm/hg/mercurial/revset.py", line 3089, in _iterfilter
if cond(x):
File "/home/mpm/hg/mercurial/util.py", line 415, in f
cache[arg] = func(arg)
File "/home/mpm/hg/mercurial/revset.py", line 1215, in matches
for t in c.files() + [c.user(), c.description()])
File "/home/mpm/hg/mercurial/context.py", line 525, in files
return self._changeset[3]
File "/home/mpm/hg/mercurial/util.py", line 531, in __get__
result = self.func(obj)
File "/home/mpm/hg/mercurial/context.py", line 498, in _changeset
return self._repo.changelog.read(self.rev())
File "/home/mpm/hg/mercurial/changelog.py", line 338, in read
text = self.revision(node)
File "/home/mpm/hg/mercurial/revlog.py", line 1092, in revision
bins = self._chunks(chain)
File "/home/mpm/hg/mercurial/revlog.py", line 1013, in _chunks
ladd(decompress(buffer(data, chunkstart - offset, chunklength)))
File "/home/mpm/hg/mercurial/revlog.py", line 91, in decompress
return _decompress(bin)
----
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 28 Aug 2015 16:59:31 -0500 |
parents | |
children | f2fe7b199bb4 |
comparison
equal
deleted
inserted
replaced
26118:049005de325e | 26123:bdac264e5ed4 |
---|---|
1 # showstack.py - extension to dump a Python stack trace on signal | |
2 # | |
3 # binds to both SIGQUIT (Ctrl-\) and SIGINFO (Ctrl-T on BSDs) | |
4 | |
5 import sys, signal, traceback | |
6 | |
7 def sigshow(*args): | |
8 sys.stderr.write("\n") | |
9 traceback.print_stack(args[1], limit=10, file=sys.stderr) | |
10 sys.stderr.write("----\n") | |
11 | |
12 def extsetup(ui): | |
13 signal.signal(signal.SIGQUIT, sigshow) | |
14 try: | |
15 signal.signal(signal.SIGINFO, sigshow) | |
16 except AttributeError: | |
17 pass |