{"id":15107416,"url":"https://github.com/valentinbourcier/stdebuggerprofilerextension","last_synced_at":"2026-01-19T07:03:11.124Z","repository":{"id":190438361,"uuid":"682597586","full_name":"ValentinBourcier/StDebuggerProfilerExtension","owner":"ValentinBourcier","description":null,"archived":false,"fork":false,"pushed_at":"2023-09-03T16:07:03.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-11T09:48:10.870Z","etag":null,"topics":["debugger","debugger-extension","debugging-tool","pharo","pharo-smalltalk"],"latest_commit_sha":null,"homepage":"","language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ValentinBourcier.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-24T14:08:50.000Z","updated_at":"2023-09-01T12:28:37.000Z","dependencies_parsed_at":"2024-10-31T05:40:48.370Z","dependency_job_id":null,"html_url":"https://github.com/ValentinBourcier/StDebuggerProfilerExtension","commit_stats":{"total_commits":12,"total_committers":2,"mean_commits":6.0,"dds":0.25,"last_synced_commit":"cf4a056ad0d2ba3f5e90a987f707cf33c4be6352"},"previous_names":["valentinbourcier/stdebuggerprofilerextension"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValentinBourcier%2FStDebuggerProfilerExtension","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValentinBourcier%2FStDebuggerProfilerExtension/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValentinBourcier%2FStDebuggerProfilerExtension/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValentinBourcier%2FStDebuggerProfilerExtension/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ValentinBourcier","download_url":"https://codeload.github.com/ValentinBourcier/StDebuggerProfilerExtension/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345711,"owners_count":20924098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["debugger","debugger-extension","debugging-tool","pharo","pharo-smalltalk"],"created_at":"2024-09-25T21:24:25.928Z","updated_at":"2026-01-19T07:03:06.073Z","avatar_url":"https://github.com/ValentinBourcier.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pharo debugger extension example \n\nThis project contains:\n- A debugger extension for profiling the call selected in the call stack.\n- A template class to develop an extension for the Pharo debugger.\n\n## How to install the project ?\n\nTo install the project run the following Metacello command:\n\n```st\nMetacello new\n  githubUser: 'ValentinBourcier' project: 'StDebuggerProfilerExtension' commitish: 'main' path: 'src';\n  baseline: 'StDebuggerProfilerExtension';\n  load\n```\n\n## How to activate an extension ?\n\n![activate-debugger-extension](https://github.com/ValentinBourcier/StDebuggerProfilerExtension/assets/32521673/e568a147-10d4-49fa-b6e2-4ebcda87d44c)  \n\nFrom the debugger:  \n\n1. Go to the settings browser (top right corner button).  \n2. Find and click on the \"Debugger Extensions\" menu.  \n3. Find and unfold your extension's menu.  \n4. Tick the checkbox \"Show in debugger\".  \n\nThis can be also done by opening the settings browser from anywhere in the image.  \nThe \"Debugger Extensions\" menu is situated under the \"Tools \u003e Debugging\" menu.\n\n## How to create a new extension ?\n\nCreate a copy of the template class `StDebuggerExtensionTemplatePresenter`.\n\nPre-requisite:\n1. The class must extend `SpPresenter`. Because the extension is going to be integrated into the debugger UI (made with Spec2).\n2. The class must use the trait `TStDebuggerExtension`. To allow the system to detect it.\n3. The name of the extension must unique. It must be declared by overriding the method `debuggerExtensionToolName` (inherited from the trait). Forgetting this will cause a failure when opening the settings browser.\n\nInteresting to know:\n- The instance variable `debugger` in the context of the extension represent the entire debugger UI (the instance of `StDebugger` in which the extension takes place).  \n\n- Each update of the debugger UI triggers the update of the extension UI through the call of the message `updatePresenter` (from `SpPresenter`).\nFrom there you can define the operations required for your extension to be in sync with the debugger context.\nNotice that when the debugger open for the first time, `updatePresenter` is called at least 3 times.\nDuring the debugger UI and the extension UI initialization, and after the first refresh of the call stack.\n\n\n\nTutorial to develop an Pharo debugger extension:  \n\n- https://thepharo.dev/2021/04/02/debugger-extensions-in-pharo-9-0/\n\n## Known issues\n\nWhile developing an extension for the Pharo debugger, we might want to explore the content of the `debugger` variables.\nPutting an `self halt` (sometimes even a `self haltOnce`) to observe the variable state during execution might not be possible.\n\nIt seems that the opening process of the debugger enters in a loop that the system kill at some point, resulting in no visible action or error.\n\nA workaround is to add an `inspect` instruction such as `debugger inspect` instead of the `self halt`.\nThis will open an inspector for the debugger instance.\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalentinbourcier%2Fstdebuggerprofilerextension","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalentinbourcier%2Fstdebuggerprofilerextension","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalentinbourcier%2Fstdebuggerprofilerextension/lists"}