{ "info": { "author": "Tony Simpson", "author_email": "agjasimpson@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3" ], "description": "# Pointbreak\n\nPointbreak lets you write python programs that debug or analysis other programs. It works like a debugger but because it's a Python library you can extend and interact with it very easily.\n\nPointbreak is designed to make debugging and analysing complex things like JITs simpler without having to added lots of debugging code to the target.\n\n## General Advantages\n* Breakpoints are any Python callable\n* Simple API\n* Can be used from a Python REPL like IPython\n* Can be easily embedded in other things e.g. a Flask app\n* Easy to add support for custom symbols and JIT generated code\n* Simpler and less restrictive than GDB Python API\n\n## Disadvantage\n* Early developement\n* Missing many standard debugger features\n* Other issues see https://github.com/tonysimpson/pointbreak/issues\n\n# Example print BOO! when function is called\nIf you compile `gcc ghost.c -o ghost` and run `./ghost` nothing much happens\nBut if we run `python boo_ghost.py` it prints\n```Boo!\nBoo!\nBoo!\nBoo!\nBoo!\nBoo!\nBoo!\nBoo!\nBoo!\nBoo!\n```\nbecause our python function is getting called each time there_is_a_ghost is called.\nThere are more examples in the examples directory.\n\n## ghost.c\n```C\n/* I'm a silly program that does nothing much on its own. */\n/* Compile me with \"gcc ghost.c -o ghost\". */\n\nvoid there_is_a_ghost(void) {\n return;\n}\n\nint main(int argc, char *argv[]) {\n int i;\n for (i = 0; i < 10; i++) {\n there_is_a_ghost();\n }\n return 0;\n}\n```\n## boo_ghost.py\n```python\nfrom __future__ import print_function\nimport pointbreak\n\ndef print_boo(debugger):\n print(\"Boo!\")\n return True\n\ndb = pointbreak.create_debugger('ghost')\ndb.add_breakpoint('there_is_a_ghost', print_boo)\ndb.continue_to_last_event()\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tonysimpson/pointbreak", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pointbreak", "package_url": "https://pypi.org/project/pointbreak/", "platform": "", "project_url": "https://pypi.org/project/pointbreak/", "project_urls": { "Homepage": "https://github.com/tonysimpson/pointbreak" }, "release_url": "https://pypi.org/project/pointbreak/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "System process debug and analysis library.", "version": "0.0.2" }, "last_serial": 4057684, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "c703afc7a9c0ed7b4b1221af739781c0", "sha256": "db985dfa5656965ddf056b103d8f4da604bb31deda05592cb1676338bb68e328" }, "downloads": -1, "filename": "pointbreak-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c703afc7a9c0ed7b4b1221af739781c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8331, "upload_time": "2018-07-13T12:30:13", "url": "https://files.pythonhosted.org/packages/54/6e/c5665432dc6594685e83a980521773a9fb87b8733667aa6438d13c6011b4/pointbreak-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c703afc7a9c0ed7b4b1221af739781c0", "sha256": "db985dfa5656965ddf056b103d8f4da604bb31deda05592cb1676338bb68e328" }, "downloads": -1, "filename": "pointbreak-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c703afc7a9c0ed7b4b1221af739781c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8331, "upload_time": "2018-07-13T12:30:13", "url": "https://files.pythonhosted.org/packages/54/6e/c5665432dc6594685e83a980521773a9fb87b8733667aa6438d13c6011b4/pointbreak-0.0.2.tar.gz" } ] }