An interactive command-line tool for analyzing and debugging Go goroutine dumps with filtering, deduplication, and diff capabilities.
goroutine-inspect is an interactive command-line tool for analyzing goroutine dumps from Go applications. It helps developers debug concurrency issues by providing features to load, filter, search, deduplicate, and diff goroutine stack traces. The tool simplifies the process of identifying goroutine leaks, deadlocks, and performance bottlenecks in complex Go programs.
Go developers and engineers who need to debug concurrency issues, analyze goroutine dumps from production incidents, or optimize the performance of Go applications with many goroutines.
Unlike basic pprof output or manual inspection, goroutine-inspect offers an interactive shell with powerful filtering, deduplication, and diff capabilities, allowing developers to quickly isolate problematic goroutines and reduce noise from thousands of stack traces.
An interactive tool to analyze Golang goroutine dump.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a workspace with commands like cd, ls, and whos, allowing intuitive variable assignment and manipulation of goroutine dumps, making exploration more dynamic than static tools.
The dedup() function collapses duplicate stack traces, as shown in the README where 2217 goroutines were reduced to 46, significantly reducing noise for focused analysis.
Supports complex conditionals using properties like id, state, and duration, with functions like contains() for text search, enabling precise isolation of problematic goroutines.
Allows comparison of two dumps via the diff() function, returning unique and common goroutines, which is handy for before-and-after change analysis in debugging sessions.
Only works with pre-saved dump files, lacking integration for real-time goroutine inspection or direct hooking into running Go applications, which limits immediate debugging.
The conditional expressions for filtering (e.g., 'id>900 && id<2000') can be error-prone for users unfamiliar with this syntax, and the README provides limited examples for edge cases.
Save functionality only exports to text files, with no built-in support for structured formats like JSON or CSV, hindering integration with other tools for further data processing.