## //launch  gRPC debugging sucks so we fixed it

Adhityaa Chandrasekar  
Sep 29, 2025

Context—  We're building the Heroku for tracing.

You can find  more perf bottlenecks in  less time.

Subtrace now supports gRPC.

Here's a dirty secret: Google strategically open sourced protobuf and gRPC but none of the magical internal tooling that’s supposed to go with it. They have an internal tool called RPCStudio that lets you see every RPC flowing through prod services in realtime. It made me way more productive as a engineer on the gRPC-Go team at Google but nobody outside even knows it exists.

Why don't you have this? Google can force its ~100k engineers to write everything in the same four blessed languages, use the same RPC framework, check all code into the same monorepo, deploy to the same platform, and so on. They've spent literal billions building world-class internal tooling around this. They also have Jeff Dean.

You, on the other hand, have to live with REST endpoints mixed with gRPC, graphQL, random webhooks, a Rust rewrite that's always 90% done, and whatever MCP uses as of this morning. Your choices: litter your code with Otel spans (gross), grep logs hoping you logged the right thing (lol), or stare at Grafana wondering why your p99 spiked (very helpful!).

We're building Subtrace to fix this.

Today we added gRPC support to Subtrace. Open a terminal and do

```
subtrace run -- ./app
```

to see every HTTP and gRPC call in your app with full payload. It’s like RPCStudio but works outside Mountain View.

Here's a quick video to show how it works:

gRPC debugging with Subtrace demo 1:27

To do this without code changes or root privileges, we use BPF to intercept at the TCP socket layer and parse protocols on the fly. It adds <100μs perf overhead and has a one command setup that takes less time than it took you to read this post. All languages are supported out of the box, even ones that haven't been invented yet!

The endgame isn't just HTTP and gRPC though. We want to be the Universal Network Debugger™ for your whole stack. Imagine debugging a weird bug where your gRPC server triggers an async HTTP webhook that queries Postgres before reading from S3 and you can see the _entire flow_ with actual payloads + timings with zero manual logging.

That's the world I want to live in.

P.S. We're [open source](https://github.com/subtrace/subtrace) + 2.7K stars + [HackerNews approved](https://news.ycombinator.com/item?id=43096477):)

Debug faster with Subtrace
