{ "info": { "author": "mitmeedle", "author_email": "mitmeedle@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2 :: Only", "Topic :: System :: Monitoring" ], "description": "pytb\n====\n\nUtility for inspecting python stack of running process (x64 linux only)\n\nFeatures:\n---------\n\n- Python3 friendly (pytb itself requires python2 to run, but process\n being analyzed can be python3)\n- Greenlet (gevent) friendly, can show stacktrace for each greenlet\n- Works by just reading ``/proc//mem``, so doesn't need to attach\n to target process (e.g. if you don't want to stop the target process,\n or are debugging an unattachable process, like a D-state process)\n\nBugs:\n-----\n\n- Linux only, 64-bit only.\n\nInstallation:\n-------------\n\n``pip install pytb``\n\nUsage:\n------\n\n``sudo pytb [pid]``\n\nwill show you stacktrace of each python thread.\n\nIf you want to also see greenlet stacktraces, use\n\n``sudo pytb -g [pid]``\n\nthis will also show you greenlets stacktraces. NOTE: in order to find\nall greenlets pytb looks for all gc tracked objects, so this may take a\nwhile if you have lots of objects.\n\nNotes:\n------\n\nSupports viewing python2 and python3 tracebacks (it will try to guess,\nwhether it's 2 or 3, however you can help it by specifying -2 or -3\noption)\n\nThe utility works by reading ``/proc//mem`` (this is why sudo is\nneeded). It uses *nm* and *objdump* for finding inner python structures\nin memory.\n\nIt's also possible that python process is compiled with different flags\nthat influence inner python's structure fields alignment (on which\n*pytb* heavily relies) In this case you can run it with\n``-d python-executable`` option where ``python-executable`` is an\nexecutable that contains debug symbols for the process you are\ninterested in. *pytb* will launch gdb in this case and ask it for\noffsets of fields it's interested in.\n\nThere is also a gotcha that ``frame->f_code->co_filename`` contains not\nan absolute path, but relative, and if your process has chdir'ed\nsomewhere, those relative paths will become invalid (they are used when\nrendering stacktraces). For this situation there is ``--scriptdir dir``\nargument which defaults to ``/proc//cwd`` and serves as a root for\n``co_filename``.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/notsorandomname/pytb", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "pytb", "package_url": "https://pypi.org/project/pytb/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pytb/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/notsorandomname/pytb" }, "release_url": "https://pypi.org/project/pytb/0.0.10/", "requires_dist": null, "requires_python": null, "summary": "Utility for viewing stacktraces of running python processes", "version": "0.0.10" }, "last_serial": 1649943, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "4c9cfafaedf1559a47d2019c78373c41", "sha256": "10d4b4c17201e464307f88bf4cad639b9591bb0302b61db2fd5ac981b5a391a6" }, "downloads": -1, "filename": "pytb-0.0.1.tar.gz", "has_sig": false, "md5_digest": "4c9cfafaedf1559a47d2019c78373c41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11825, "upload_time": "2015-05-17T17:28:33", "url": "https://files.pythonhosted.org/packages/5b/75/0df7709d17beb3740cfd7bc0a7a001dd9eb2e1473bc89b6388c514898c51/pytb-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "fb29b0db64a8f444b09357416d5897e1", "sha256": "4dfae0b55a37701a1ae8378f577b8d00cfe756c1f6b099d57beb4ba5d5ab3628" }, "downloads": -1, "filename": "pytb-0.0.10.tar.gz", "has_sig": false, "md5_digest": "fb29b0db64a8f444b09357416d5897e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13157, "upload_time": "2015-07-26T09:05:45", "url": "https://files.pythonhosted.org/packages/0d/55/13854b8bc0d724d8b5b2eda76b4d173ddfa9d6b05deb77cccf430f7b044b/pytb-0.0.10.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a4b86ef5fed0b9305bdacf62cc07ebe5", "sha256": "60444552d1373fd7b7744a8a915c3bb6938d9e48706f747b434f7b34431bd3de" }, "downloads": -1, "filename": "pytb-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a4b86ef5fed0b9305bdacf62cc07ebe5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11806, "upload_time": "2015-05-17T18:08:37", "url": "https://files.pythonhosted.org/packages/68/94/46f2701d025ccc11b4568f45dc51a1f968352df416e446903f53b71c5050/pytb-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "63de4621ce82881931896cd9a8a1bb1e", "sha256": "31e1d8ed9c81511a8a733d2823925c8fe2e0b384d9bee2125578420d511fcc45" }, "downloads": -1, "filename": "pytb-0.0.3.tar.gz", "has_sig": false, "md5_digest": "63de4621ce82881931896cd9a8a1bb1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12145, "upload_time": "2015-05-17T18:36:19", "url": "https://files.pythonhosted.org/packages/58/2d/cb7782532d18381b26a79240ffd17242a7d5e9a036dd3180a0b6db916642/pytb-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "561dc659eb8cbf57b3fb165f49437975", "sha256": "c43bb9dffe3c6b961623b117a86e70436c9366c6f04c7b0e91319dca8fe037ad" }, "downloads": -1, "filename": "pytb-0.0.4.tar.gz", "has_sig": false, "md5_digest": "561dc659eb8cbf57b3fb165f49437975", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12264, "upload_time": "2015-05-17T18:45:20", "url": "https://files.pythonhosted.org/packages/bf/2d/ebd7b944cc0f389e0ba64ee98d8c9919d8a4d1d5eeb835aa2c1c88b28158/pytb-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "07e08aca487b95e2fb569b846db99549", "sha256": "bb5686ebebb65c0d387d987d359efa1e68a9f5f49ed98abcdcc204cce46ec440" }, "downloads": -1, "filename": "pytb-0.0.5.tar.gz", "has_sig": false, "md5_digest": "07e08aca487b95e2fb569b846db99549", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12628, "upload_time": "2015-05-17T18:56:32", "url": "https://files.pythonhosted.org/packages/5f/ce/cc582d0d46c853c69644c6759550c9b38037d7d5ec9452c4e79a2be92026/pytb-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "04ba6788e14d6c10bc37147460ccc2b6", "sha256": "c2e43c77c1ef34f14549ab7b6054c485b361cef42eec79f7d2bd983477f18795" }, "downloads": -1, "filename": "pytb-0.0.6.tar.gz", "has_sig": false, "md5_digest": "04ba6788e14d6c10bc37147460ccc2b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12661, "upload_time": "2015-05-17T19:51:43", "url": "https://files.pythonhosted.org/packages/b8/6c/bd3ee164865e9288b5a1b57f17ae7b9c3b88b807838eb18d3fe0a67463fd/pytb-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "4c7274ff56bd0ca5c71b60060e3bdf2a", "sha256": "242a2e45db49cbdb62965b7b2bbd39975c0be393324e9699e39c1023e4e68a97" }, "downloads": -1, "filename": "pytb-0.0.7.tar.gz", "has_sig": false, "md5_digest": "4c7274ff56bd0ca5c71b60060e3bdf2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12695, "upload_time": "2015-05-17T19:55:16", "url": "https://files.pythonhosted.org/packages/19/6f/9e56a554873ab00e0bdf68a8107cdd6a0715d97a7a084cae35a43820e4f7/pytb-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "cc95331e3dd0eace32ff05b1fe9276f0", "sha256": "6deb72f90bfff270024865180737e83b11302be3d70e92662e14c94a429b0360" }, "downloads": -1, "filename": "pytb-0.0.8.tar.gz", "has_sig": false, "md5_digest": "cc95331e3dd0eace32ff05b1fe9276f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12939, "upload_time": "2015-05-17T20:01:26", "url": "https://files.pythonhosted.org/packages/cd/e6/34a85ab8b18f3d63f2ad43289a0d00c931e4f2a996ba32d994c92579754c/pytb-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "c8e9688a38c559d8a1a6067fd602be2a", "sha256": "6f9eb899f13db0dce43b094de5500bddff1483cbf3c3743c97e5e8d126b1ae17" }, "downloads": -1, "filename": "pytb-0.0.9.tar.gz", "has_sig": false, "md5_digest": "c8e9688a38c559d8a1a6067fd602be2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13137, "upload_time": "2015-05-17T20:26:58", "url": "https://files.pythonhosted.org/packages/8e/5f/21cc1372d2744bd18ff285206ae3c60704b5620f430ec127527d6b8a91c5/pytb-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fb29b0db64a8f444b09357416d5897e1", "sha256": "4dfae0b55a37701a1ae8378f577b8d00cfe756c1f6b099d57beb4ba5d5ab3628" }, "downloads": -1, "filename": "pytb-0.0.10.tar.gz", "has_sig": false, "md5_digest": "fb29b0db64a8f444b09357416d5897e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13157, "upload_time": "2015-07-26T09:05:45", "url": "https://files.pythonhosted.org/packages/0d/55/13854b8bc0d724d8b5b2eda76b4d173ddfa9d6b05deb77cccf430f7b044b/pytb-0.0.10.tar.gz" } ] }