Skip to content

Releases: swananan/ghostscope

GhostScope v0.1.4

02 May 18:53

Choose a tag to compare

GhostScope v0.1.4 Pre-release
Pre-release

Overview

GhostScope v0.1.4 focuses on improving DWARF analysis performance and making source-aware tracing much more reliable on highly optimized C binaries.

This release strengthens GhostScope's ability to trace real-world C production builds, especially binaries built with -O1, -O2, -O3, and debug information. It significantly reduces startup indexing overhead, improves fast-path DWARF parsing, expands optimized inline parameter recovery, and adds stronger DW_AT_entry_value handling for optimized compiler output.

Highlights

  • Improved startup indexing time by optimizing DWARF fast-path parsing and reducing repeated analysis work
  • Improved DWARF analysis performance by using faster parser traversal paths and sharing parsed symbol-name data
  • Established benchmark history tracking for DWARF performance so future indexing regressions are easier to catch
  • Expanded performance regression coverage with broader DWARF perf baselines
  • Significantly strengthened optimized-build tracing for -O1, -O2, and -O3 binaries with debug info
  • Improved recovery of inline function parameters, caller values, and optimized-away variables
  • Added stronger DW_AT_entry_value support for both inline and non-inline call paths
  • Improved DWARF5 support, including rnglistx, split function ranges, and debug_addr entry PC handling
  • Improved function lookup reliability through better demangling and symbol-fragment matching
  • Hardened global/static variable access, bitfield chains, dereference reads, and aggregate member handling
  • Improved PID/module matching in container, overlayfs, and complex proc-maps environments

Bug Fixes

This release also includes a broad set of correctness and reliability fixes across the tracing pipeline, including:

  • Fixed PID offset prefill behavior before uprobe attachment
  • Fixed multiple optimized inline parameter recovery edge cases
  • Fixed non-inline entry-value recovery at runtime
  • Fixed DWARF5 range-list and split-range lookup issues
  • Fixed runtime DWARF endianness handling
  • Fixed direct aggregate member scanning to avoid incorrect recursive matches
  • Hardened unsupported DWARF expression handling to fail closed instead of producing misleading results
  • Improved overlayfs inode fallback and module identity matching

What's Next

Next, I plan to continue refactoring the DWARF modules, expand test coverage, improve support for highly optimized compiler output, and provide clearer error messages when GhostScope cannot recover a value safely.

These efforts will lay the groundwork for future stack unwinding support and broader programming language support.

GhostScope v0.1.3

09 Apr 11:58

Choose a tag to compare

GhostScope v0.1.3 Pre-release
Pre-release

Overview

GhostScope v0.1.3 focuses on making source-aware tracing easier to use, especially from the command line and in AI-assisted workflows.

This release significantly improves the CLI experience and introduces installable GhostScope skills, making it much easier to use AI to write GhostScope tracing scripts from source trees, DWARF-enabled binaries, and runtime context. Alongside that, we continued expanding Docker support, strengthened inline and DWARF handling, and fixed a number of important correctness and usability issues.

Highlights

  • Improved CLI script-mode usability with better output formatting, color controls, and clearer status reporting
  • Added embedded --script-help so scripting help is available directly from the ghostscope binary
  • Introduced installable GhostScope skills and curl-based installation
  • Made AI-assisted tracing workflows much more practical, helping users generate GhostScope scripts more easily
  • Expanded Docker and container support. See the Container Guide for PID namespace behavior, supported topologies, and current limitations.
  • Strengthened inline handling and DWARF resolution in optimized and origin-backed cases

Bug Fixes

This release also includes a broad set of fixes across the tracing pipeline, including:

  • Better error reporting for print builtin failures via ExprError
  • Cleaner separation between script output and status prompts
  • Fixes for scalar DWARF expression capture lengths
  • Correct trace event PID/TID ordering
  • .bss rebasing fixes and stronger global/static variable handling
  • Multiple DWARF and inline resolution fixes for optimized and edge-case builds

Thanks

Special thanks to @philipc for helping upgrade gimli and for identifying a critical bug that helped drive several of the DWARF correctness improvements in this release.

What's Next

Next, I will continue focusing on:

  • Improving DWARF analysis stability
  • Reducing startup-time overhead, especially during the initial DWARF analysis phase

If that work goes well, I plan to start exploring a new backtrace command built on eBPF-powered, DWARF-aware stack unwinding.

GhostScope v0.1.1-beta

04 Nov 14:58

Choose a tag to compare

Pre-release

What's changed

  • Release binaries no longer depend on the libffi dynamic library, making deployments lighter.
  • Enhanced scripting language with more user-friendly error messages.
  • Improved -t mode with support for probing global variables.
  • Better inline-function support: trace/info output now includes address indices and inline markers.
  • UI/tooling upgrades: source panel can be hidden via configuration, command parsing is more robust, and long trace messages auto-collapse.
  • Numerous bug fixes😁.

Quick Start: See our Tutorial to get started in 10 minutes.

Limitations and Constraints: please see Limitations Documentation.

GhostScope v0.1.0-beta

12 Oct 16:42

Choose a tag to compare

Pre-release

Overview

GhostScope is a runtime tracing tool that brings the simplicity of printf debugging to production systems. It leverages DWARF debug information and eBPF/uprobe technology to safely extract and display variable values, function arguments, complex data structures, and stack backtraces from running programs — all without stopping or modifying them.

"The most effective debugging tool is still careful thought, coupled with judiciously placed print statements." — Brian Kernighan

Quick Start: See our Tutorial to get started in 10 minutes.


⚠️ Beta Release Notice

This is a beta release for early testing and feedback.

Known Limitations

  • Language: Currently supports C language only. C++ and Rust basic features support coming soon.
  • Platform: x86_64 (amd64) only.
  • Optimized Builds: Detection is limited for heavily optimized binaries (e.g., -O2/-O3, LTO). Support is in progress and will improve in upcoming releases

For a complete list of current limitations and constraints, please see Limitations Documentation.