{"id":17128866,"url":"https://github.com/andrewpmartinez/grid","last_synced_at":"2025-09-03T03:41:05.900Z","repository":{"id":44625890,"uuid":"369617825","full_name":"andrewpmartinez/grid","owner":"andrewpmartinez","description":"GRID - cross platform go routine dump tool","archived":false,"fork":false,"pushed_at":"2024-09-03T21:17:43.000Z","size":197,"stargazers_count":4,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T07:10:04.234Z","etag":null,"topics":["golang","goroutine","goroutines","inspect","pprof"],"latest_commit_sha":null,"homepage":"","language":"Go","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/andrewpmartinez.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-21T18:08:57.000Z","updated_at":"2024-05-16T23:54:52.000Z","dependencies_parsed_at":"2024-06-21T01:06:24.513Z","dependency_job_id":"e662d5b4-d9df-4e5d-b563-c7e2933da4ab","html_url":"https://github.com/andrewpmartinez/grid","commit_stats":{"total_commits":8,"total_committers":1,"mean_commits":8.0,"dds":0.0,"last_synced_commit":"f4222e80b347e049e7bb4bb2674a3ee35b4ddba3"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/andrewpmartinez/grid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewpmartinez%2Fgrid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewpmartinez%2Fgrid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewpmartinez%2Fgrid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewpmartinez%2Fgrid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewpmartinez","download_url":"https://codeload.github.com/andrewpmartinez/grid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewpmartinez%2Fgrid/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266663175,"owners_count":23964706,"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","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":["golang","goroutine","goroutines","inspect","pprof"],"created_at":"2024-10-14T19:08:16.772Z","updated_at":"2025-07-23T10:34:48.118Z","avatar_url":"https://github.com/andrewpmartinez.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# grid - Go Routine Inspect Dumps\n\n\nGRID provides both a go module to parse dump files (`grid/dump`) and an executable GUI (`grid`) to show the results of the parse (`cmd/grid`). \nThe goals is to aid with human interpretation of golang go routine dumps. In large programs with many go routines (due to workers, threads, etc.)\nit can be difficult to see which go routines are the same (stack wise) and which ones are unique.\n\nGRID's parser provides both the raw parse and \"de-duped\" go routines. Go routines have a signature that is calculated by the go routine's stack\ntrace at the source file and line level. The go routines signature is then matched against all other go routines in the dump to group them\ntogether.\n\n![GRID Screenshot](images/screenshot.png)\n\n## The Parser: Dump\n\nThe dump module can take in a go routine dump file and produces a `Dump` struct. It can be included in your golang project with your \nown UI or CLI output. It is developed separate from the UI `grid`. It can be invoked by the `dump.ParseFile()` function which has the \nfollowing signature:\n\n```\nParseFile(filePath string, logger Logger) (*Dump, error)\n```\n\nWith an example invocation of:\n\n```\n    dump, err := dump.ParseFile(pathToDumpFile, logrus.New())\n```\n\nThe first argument, `filePath`, is simply the path to the go routine dump file. The second argument, `logger`, is\nany logger you wish that satisfies the interface requirements (e.g. logrus).\n\nThe result of a parse is either error or a `Dump` struct.\n\n```\ntype Dump struct {\n\tRoutines []*Routine\n\tStats    *Stats\n}\n```\n\n`Dump` structs has the raw parsed `Routine`s as well as a `Stats` struct that contain structs that have been organized\nby function and type as well as having duplicate stacks reduced to 1 entry. All the raw routines still are available\ninside the `Stats` struct if needed.\n\n\n## The GUI: GRID\n\nThe GRID UI is an immediate mode UI. It can be invoked by downloading a release or building this project and running:\n\n```\n\u003e grid gui \u003cpath.to.dump\u003e\n```\n\n\n## Upcomming Features\n\n1) Dump searching\n2) Opening 0..n dump files\n3) Dump export\n4) UX improvements\n\n## Building This Project\n\nThis project uses [AllenDang's GIU](https://github.com/AllenDang/giu) library and is subject to that project's build\nrequirements. See your OS's requirements [here](https://github.com/AllenDang/giu#install).\n\nOnce complete, building GRID can be accomplished as follows:\n\n1) Check out the repository\n2) Navigate to checkout repository\n3) Install via `go`\n```\ngo install ./...\n```\n\nIf you wish to make the binary portable, ensure you include ldflags/extldflags to create a statically linked binary. For hints, see this projects release workflow.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewpmartinez%2Fgrid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewpmartinez%2Fgrid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewpmartinez%2Fgrid/lists"}