ArticlesProjectsWeeklyCredentialsAbout

Distributed Debugging Toolkit (1997)

Shell scripts and Java utilities for correlating logs, capturing thread dumps, and diagnosing failures across multiple JVMs — from before distributed tracing existed.

debuggingdistributed-systemsjava

Distributed Debugging Toolkit (1997)

Practical tools for diagnosing problems in a distributed Java system — written before Zipkin, before ELK, before distributed tracing was a thing.

Contents

  • scripts/collect-logs.sh — ssh to all hosts, extract time window, merge and sort
  • scripts/thread-dump.sh — send SIGQUIT to a named JVM process
  • src/.../CorrelationId.java — generates and propagates request IDs through calls
  • src/.../CircularLogBuffer.java — in-memory ring buffer for low-overhead debug logging
Source code
# Distributed Debugging Toolkit (1997)

## Usage

```sh
# Merge logs from all hosts for a 10-minute window
./scripts/collect-logs.sh "1997-08-22 14:3"

# Capture thread dump from primary
./scripts/thread-dump.sh nms-primary

# Compile the Java utilities
mkdir -p build
find src -name '*.java' | xargs javac -d build
```