{"id":28493714,"url":"https://github.com/limechain/gimlet","last_synced_at":"2026-04-16T10:00:32.007Z","repository":{"id":276299027,"uuid":"880149457","full_name":"LimeChain/gimlet","owner":"LimeChain","description":"VSCode Extension for debugging Solana Programs","archived":false,"fork":false,"pushed_at":"2026-04-16T08:26:04.000Z","size":1145,"stargazers_count":8,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-16T08:33:14.559Z","etag":null,"topics":["debugging","solana","solana-program","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=limechain.gimlet","language":"JavaScript","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/LimeChain.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-29T07:57:25.000Z","updated_at":"2026-04-16T08:25:05.000Z","dependencies_parsed_at":"2025-02-07T12:27:23.036Z","dependency_job_id":"9ff187da-58d4-4ff7-94e8-5f4e80334991","html_url":"https://github.com/LimeChain/gimlet","commit_stats":null,"previous_names":["limechain/solana-step-debugger","limechain/gimlet"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/LimeChain/gimlet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimeChain%2Fgimlet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimeChain%2Fgimlet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimeChain%2Fgimlet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimeChain%2Fgimlet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LimeChain","download_url":"https://codeload.github.com/LimeChain/gimlet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimeChain%2Fgimlet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31880882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T09:23:21.276Z","status":"ssl_error","status_checked_at":"2026-04-16T09:23:15.028Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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","solana","solana-program","vscode-extension"],"created_at":"2025-06-08T09:30:48.276Z","updated_at":"2026-04-16T10:00:31.970Z","avatar_url":"https://github.com/LimeChain.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gimlet\n\nGimlet is a VSCode Extension that makes Solana smart contract debugging seamless, automated, and fully integrated into the VS Code experience, eliminating the need for manual configuration or terminal-only workflows.\n\n![debugger](assets/vscode-debugger.png)\n\n---\n\n## Table of Contents\n\n- [Prerequisites](#prerequisites)\n- [Introduction](#introduction)\n- [Usage](#usage)\n- [Example Project](#example-project)\n- [Troubleshooting](#troubleshooting)\n\n---\n\n## Prerequisites\n\nBefore using Gimlet, ensure you have the following tools installed:\n\n| Tool             | Installation Command                                                                                   | Notes                |\n|------------------|--------------------------------------------------------------------------------------------------------|----------------------|\n| `rust-analyzer`  | [Rust Analyzer Extension](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer) | VSCode extension     |\n| `codeLLDB`       | [CodeLLDB Extension](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)          | VSCode extension     |\n| `solana-cli`     | [Solana Docs](https://solana.com/docs/intro/installation)                                              | Use latest version   |\n| `platform-tools` | [Solana Docs](https://solana.com/docs/intro/installation)                                              | Use versions \u003e= 1.54 |\n\n---\n\n## Introduction\n\nGimlet uses LiteSVM to execute its tests. Each test transaction can start a VM instance running in SBPF, which exposes a gdbstub for debugging over TCP. Gimlet connects to this gdbstub using a specified `tcpPort`. It then launches `lldb` with a special library provided by the Solana platform-tools, enabling LLDB to load and debug ELF files—your compiled SBPF programs. It also supports CPI (Cross-Program Invocation) debugging.\n\n---\n\n## Getting Started with Gimlet\n\nGimlet makes debugging Solana programs inside VS Code effortless. Follow these steps to get started:\n\n### 1. Automatic Configuration\n\nWhen you open your Solana project, **Gimlet** automatically creates a `.vscode/gimlet.json` configuration file.  \nYou can customize this file to:\n- Specify a different **platform-tools version**\n- Change the default **TCP port** used for debugging\n- Control whether the debugger **stops on entry** or runs straight to your first breakpoint  \n\n| Option                 | Default  | Description                                                                 |\n|------------------------|----------|-----------------------------------------------------------------------------|\n| `tcpPort`              | `1212`   | TCP port the gdbstub listens on                                             |\n| `platformToolsVersion` | `\"1.54\"` | Solana platform-tools version                                               |\n| `stopOnEntry`          | `true`   | Stop at program entry point; set to `false` to skip to the first breakpoint |\n| `sbfTraceDir`          | `null`   | Relative path from the workspace root to the SBF trace directory; defaults to `target/sbf/trace` |\n\nGimlet also adjusts a few **VS Code workspace settings** to ensure smooth integration.\n\n### 2. Setup Steps\n\n1. **Open VS Code** in your Solana project folder.  \n2. **Install the Gimlet extension** from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=emilroydev.gimlet-beta).  \n3. **Build your program** with debug symbols:\n   ```sh\n   cargo-build-sbf --tools-version v1.54 --debug --arch v1\n   ```\n4. **Run your test** with the debugger enabled:\n   ```sh\n   SBF_DEBUG_PORT=1212 SBF_TRACE_DIR=$PWD/target/sbf/trace cargo test --features sbpf-debugger\n   ```\n5. **Open the test file in VS Code** — you’ll see a **CodeLens button** above it labeled:\n   - `Sbpf Debug` → for individual Rust tests  \n   - `Sbpf Debug All` → for TypeScript test suites  \n6. **Click the button** to connect **Gimlet** and start step-by-step debugging.  \n\n---\n\n## Example Project\n\nExample Anchor and Pinocchio programs to test Gimlet are available [here](https://github.com/ERoydev/anchor-litesvm-debugger-example).\n\n---\n\n## Troubleshooting\n\n### Permission Denied When Trying to Debug a Program\n\nRefer to the [Apple Developer Forum thread](https://forums.developer.apple.com/forums/thread/17452) for instructions on disabling debugging protection for macOS systems.\n\n---\n\n### Platform-tools\n\nWe recommend using platform-tools version **v1.54**.  \nTo force-install the correct version inside your Rust project, run:\n\n```sh\ncargo build-sbf --tools-version v1.54 --debug --arch v1 --force-tools-install\n```\n\n### Windows (WSL)\n\n#### Common Issues and Solutions\n\n##### `libpython 3.10.so.1.0` Not Found or Executable Not Found\n\n```bash\nsudo apt update\nsudo add-apt-repository ppa:deadsnakes/ppa\nsudo apt update\nsudo apt install python3.10 python3.10-dev\npython3.10 --version\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimechain%2Fgimlet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimechain%2Fgimlet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimechain%2Fgimlet/lists"}