{"id":21195582,"url":"https://github.com/slamko/gdb-debug-until","last_synced_at":"2026-03-10T13:34:41.073Z","repository":{"id":44576461,"uuid":"449779185","full_name":"slamko/gdb-debug-until","owner":"slamko","description":"GDB extension for event-based debugging","archived":false,"fork":false,"pushed_at":"2022-05-10T20:08:57.000Z","size":68,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-02T08:38:20.790Z","etag":null,"topics":["debugging","event-driven","gdb-commands","python-gdb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slamko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-19T16:55:42.000Z","updated_at":"2023-03-25T03:35:48.000Z","dependencies_parsed_at":"2022-09-03T09:50:50.139Z","dependency_job_id":null,"html_url":"https://github.com/slamko/gdb-debug-until","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/slamko/gdb-debug-until","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fgdb-debug-until","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fgdb-debug-until/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fgdb-debug-until/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fgdb-debug-until/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slamko","download_url":"https://codeload.github.com/slamko/gdb-debug-until/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slamko%2Fgdb-debug-until/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30334700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T12:41:07.687Z","status":"ssl_error","status_checked_at":"2026-03-10T12:41:06.728Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugging","event-driven","gdb-commands","python-gdb"],"created_at":"2024-11-20T19:28:59.550Z","updated_at":"2026-03-10T13:34:41.049Z","avatar_url":"https://github.com/slamko.png","language":"Python","readme":"# GDB extension for event-based debugging\n\n---\n\n## The idea\nIt is common task to debug someone other's code, and it could be quite complicated to catch the moment, when something goes wrong, by looking through the code that you don't understand, especially if there are no comments. So this little extension with a couple of pyhton scripts and embedded Python interpretor in GDB may enhance your debugging experience. The idea is to specify the behaviour that, as you expect, will be triggered during the program is running, and ```debug-until``` will run through the code, until the specified event will be triggered, so a pretty-formatted message will be printed on the screen.\n\n\u003c/br\u003e\n\n## Getting started\nFor a quick start you can clone this repo into your current working directory:\n```\ngit clone https://github.com/Viaceslavus/gdb-debug-until.git\n```\n\nAnd run the following gdb command:\n```\nsource gdb-debug-until/debug_until.py\n```\n\nTo make this extension running every time GDB does, you can add the last command into the ```.gdbinit``` file located in your home directory (if you are on Linux), \nspecifying the correct path to the python script.\n\n  \n## Usage: \n\n```\n  debug-until \u003cstarting breakpoint\u003e [options] [event]\n\n  \u003cstarting breakpoint\u003e - should be passed in the format that is accepted by GDB\n  (e.g. \u003cfilename\u003e:\u003cline\u003e or \u003cfunction name\u003e)\n\n Options:\n        --args=\u003cinferior args\u003e : arguments to be passed to GDB`s \"run\" command\n        --step-in              : by default debug-until uses the GDB`s \"next\" command\n                                 to iterate through your code.\n                                 Add this option to switch from \"next\" to \"step\" command\n\n        -r=\u003cnum\u003e               : number of times the program should be executed\n        -i                     : iterate through assembly code by instruction.\n\n Events\n        --cmp=\u003cshell command\u003e \u0026\u0026 --exp=\u003cexpected output\u003e (Should be used together)\n                : \u003cshell command\u003e - the shell command that will be executed after each line of code\n                  The output of the \u003cshell command\u003e will be compared with an \u003cexpected output\u003e\n\n        --file-created=\u003cfile\u003e  : run until the specified file created\n        --file-deleted=\u003cfile\u003e  : run until the specified file created\n        --var-eq=\u003cvar\u003e:\u003cval\u003e   : run until the value of variable \u003cvar\u003e equals \u003cval\u003e\n        --end=\u003cend breakpoint\u003e : run until end brakpoint\n\n```\n\n##### * run ```debug-until --help``` to get usage info in the terminal.\n\n## Example:\n\nif you want to catch the moment when some variable in your code will have a specific value, you can simply run:\n```\ndebug-until main --args=\"\" --var-eq=\"my_var:10\"\n```\ninside GDB.\n\nSo, the command above will create a breakpoint in 'main' function, run the inferior program without arguments and wait until the variable, called 'my_var', will contain value 10. 'Debug-until' will iterate through each line of your code and report to you, when the condition will return true. \n\nSome more examples can be found at [examples.md](https://github.com/Viaceslavus/gdb-debug-until/blob/master/examples.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslamko%2Fgdb-debug-until","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslamko%2Fgdb-debug-until","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslamko%2Fgdb-debug-until/lists"}