<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    stone2083

    pystack--python stack trace--讓python打印線程棧信息

    pystack: python stack trace. 類似java中的jstack功能.
    使用方式:
    1. https://pypi.python.org/pypi/pdbx/0.3.0 下載, 或者直接通過easyinstall安裝
    2. python scripts中, import pdbx; pdbx.enable_pystack(); 開啟pystack功能
    3. kill -30 pid , 就可以打印stack信息了. 
    如:
    "CP Server Thread-10" tid=4564467712
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-9" tid=4560261120
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-1" tid=4526608384
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-7" tid=4551847936
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-4" tid=4539228160
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-2" tid=4530814976
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "MainThread" tid=140735286018432
        at app.run()(raspctl.py:173)
        at return wsgi.runwsgi(self.wsgifunc(*middleware))(application.py:313)
        at return httpserver.runsimple(func, validip(listget(sys.argv, 1, '')))(wsgi.py:54)
        at server.start()(httpserver.py:157)
        at self.tick()(__init__.py:1765)
        at s, addr = self.socket.accept()(__init__.py:1800)
        at sock, addr = self._sock.accept()(socket.py:202)
        at pystack()(pdbx.py:181)
        at for filename, lineno, _, line in traceback.extract_stack(stack):(pdbx.py:169)

    "CP Server Thread-5" tid=4543434752
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-8" tid=4556054528
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-3" tid=4535021568
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)

    "CP Server Thread-6" tid=4547641344
        at self.__bootstrap_inner()(threading.py:525)
        at self.run()(threading.py:552)
        at conn = self.server.requests.get()(__init__.py:1367)
        at self.not_empty.wait()(Queue.py:168)
        at waiter.acquire()(threading.py:244)


    核心代碼:
    # pystack
    def pystack():
        for tid, stack in sys._current_frames().items():
            info = []
            t = _get_thread(tid)
            info.append('"%s" tid=%d' % (t.name, tid))
            for filename, lineno, _, line in traceback.extract_stack(stack):
                info.append('    at %s(%s:%d)' % (line, filename[filename.rfind('/') + 1:], lineno))
            print '\r\n'.join(info)
            print ''

    def _get_thread(tid):
        for t in threading.enumerate():
            if t.ident == tid:
                return t
        return None

    def _pystack(sig, frame):
        pystack()

    def enable_pystack():
        signal.signal(signal.SIGUSR1, _pystack)

    有需要的朋友,趕緊拿走吧.

    posted on 2013-08-19 13:15 stone2083 閱讀(8059) 評(píng)論(0)  編輯  收藏 所屬分類: python

    主站蜘蛛池模板: 四虎永久在线精品免费一区二区| 亚洲国产成人综合| 亚洲AV噜噜一区二区三区| 国产精彩免费视频| 亚洲综合久久成人69| 永久免费视频网站在线观看| 精品日韩亚洲AV无码一区二区三区| 久久青草免费91线频观看站街| 亚洲VA中文字幕无码毛片| 黄网站色视频免费在线观看的a站最新 | 免费观看黄色的网站| 亚洲欧洲中文日产| 免费av欧美国产在钱| 亚洲爆乳少妇无码激情| 亚洲成年人啊啊aa在线观看| 亚洲天堂免费在线视频| 亚洲阿v天堂在线| www视频免费看| 亚洲丶国产丶欧美一区二区三区| 国产成人精品高清免费| 亚洲精品国产日韩无码AV永久免费网| 国产精品亚洲w码日韩中文| 永久免费av无码网站yy| 亚洲精品美女久久久久9999| 18禁无遮挡无码网站免费| 日本一区二区三区免费高清在线| 国产成人亚洲精品青草天美| 67194熟妇在线永久免费观看 | 国产一级一片免费播放i| 乱淫片免费影院观看| 亚洲AV电影院在线观看| 最新猫咪www免费人成| av网站免费线看| 亚洲人成高清在线播放| 日本中文一区二区三区亚洲| 午夜网站在线观看免费完整高清观看| 亚洲一区在线视频观看| 国产精品亚洲mnbav网站| 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 午夜男人一级毛片免费| 中文字幕不卡免费视频|