---
title: "Logpoints Walkthrough"
description: "Logpoints in IntelliJ IDEA provide a way to inspect a running Java process without suspending it, making them useful when println logging or regular breakpoints would be disruptive. The walkthrough uses a Dockerized gRPC client and server whose incorrect tenant discount is traced by attaching to the server and adding expressions at runtime, without rebuilding or redeploying. Progressive logging shows the tenant value as JetBrains while the expected value is jetbrains, and the correct-discount block is never entered; the supplied fix uses equalsIgnoreCase and returns 2,000 basis points. The article also demonstrates testing changes through logpoint side effects, extending gRPC deadlines selectively, logging in dependencies, and using the ij-debugger AI agent skill. IntelliJ IDEA 2026.2 adds faster placement and instrumentation that removes debugger-introduced overhead, although heavy expressions still execute in the VM."
---

# Logpoints Walkthrough

[Jetbrains](https://yomu.fyi/company/jetbrains) · Igor Kulakov · Sep 16, 2026

**Type:** Tutorial

## Summary

Logpoints in IntelliJ IDEA provide a way to inspect a running Java process without suspending it, making them useful when println logging or regular breakpoints would be disruptive. The walkthrough uses a Dockerized gRPC client and server whose incorrect tenant discount is traced by attaching to the server and adding expressions at runtime, without rebuilding or redeploying. Progressive logging shows the tenant value as JetBrains while the expected value is jetbrains, and the correct-discount block is never entered; the supplied fix uses equalsIgnoreCase and returns 2,000 basis points. The article also demonstrates testing changes through logpoint side effects, extending gRPC deadlines selectively, logging in dependencies, and using the ij-debugger AI agent skill. IntelliJ IDEA 2026.2 adds faster placement and instrumentation that removes debugger-introduced overhead, although heavy expressions still execute in the VM.

## Context

The example uses a Dockerized gRPC client and server. The server returns an incorrect discount for some tenants, while the client applies a deadline that can cause suspended server-side debugging to enter a cancellation path.

## Approach / What changed

Attach IntelliJ IDEA’s debugger to the running server, add and adjust logpoint expressions along the request call chain, and inspect console output without suspending execution. The walkthrough then tests a correction through logpoint side effects, optionally rewrites gRPC timeout values at runtime, and uses a conditional multiline expression or the ij-debugger AI agent skill for targeted requests.

## Takeaways

- Logpoints can be added or changed at runtime without rebuilding or redeploying the application, and they can log inside dependencies.
- Because gRPC propagates the client deadline to the server, a regular breakpoint can suspend work until the request enters its cancellation path; logpoints observe state without suspending the server.
- Logpoint expressions can have side effects, including changing a running value such as timeoutNanos, but heavy computations still execute in the target VM and may take time.

## FAQ

### Why are logpoints more suitable than breakpoints for this gRPC debugging scenario?

The client’s deadline can be propagated to the server, so suspending the server may cause it to discard further request work and enter the cancellation path. Logpoints collect comparable information in the console without suspending execution or triggering that timeout.

### Can logpoints change the behavior of a running application?

Yes. Although they are intended for logging, expressions can modify the program through side effects. The walkthrough uses this to test a fix and to extend the gRPC deadline, including only for requests carrying a Debug header.

### How was the incorrect discount identified?

Logpoints followed the request call chain and showed tenant=JetBrains when the expected value was jetbrains. They also showed that the correct discount block was not entered; the supplied fix uses equalsIgnoreCase and returns 2,000 basis points.

**Tags:** [Debugging](https://yomu.fyi/topic/debugging), [Docker](https://yomu.fyi/topic/docker), [gRPC](https://yomu.fyi/topic/grpc), [Java](https://yomu.fyi/topic/java)

- Source: [Jetbrains](https://blog.jetbrains.com/idea/2026/09/logpoints-walkthrough)
- Source URL: https://blog.jetbrains.com/idea/2026/09/logpoints-walkthrough
- Ingested by Yomu: 2026-09-16T20:00:52.358Z

[Read original post](https://blog.jetbrains.com/idea/2026/09/logpoints-walkthrough)
