You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+45-12Lines changed: 45 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,15 @@
1
1
2
2
# TDA - Thread Dump Analyzer
3
+
4
+
> [!IMPORTANT]
5
+
> **2026-01-30 - TDA 3.0 is now available!** 🚀
6
+
> This major release brings significant enhancements:
7
+
> ***Extended MCP Server**: Now with **Carrier Thread Pinning** detection and support for **SMR (Safe Memory Relocation)** parsing.
8
+
> ***Modernized UI**: Completely refreshed look and feel using **FlatLaf**.
9
+
> ***Usability Improvements**: Fixed several long-standing issues, including improved split-pane management and faster parsing.
10
+
> ***Native macOS Support**: Now providing a dedicated macOS binary.
11
+
> ***Logging**: Especially for troubleshooting in MCP Mode.
12
+
3
13
[](https://github.com/irockel/tda/actions/workflows/build.yml)
-[5. MCP Server (Headless Analysis)](#5-mcp-server-headless-analysis)
28
38
-[🏗 Building from Source](#-building-from-source)
39
+
-[🛠️ Troubleshooting](#️-troubleshooting)
29
40
-[📜 Changelog](CHANGELOG.md)
30
41
-[📜 License](#-license)
31
42
@@ -159,18 +170,6 @@ The MCP server exposes the following tools:
159
170
|`get_zombie_threads`| None | Returns a list of zombie threads (unresolved SMR addresses) with timestamps and dump names. |
160
171
|`clear`| None | Resets the server state and clears the internal thread store for a new log file. |
161
172
162
-
#### Troubleshooting
163
-
164
-
-**Logging**: TDA maintains a log file for troubleshooting. The location depends on your operating system:
165
-
-**macOS**: `~/Library/Logs/TDA/tda.log`
166
-
-**Windows**: `%LOCALAPPDATA%\TDA\Logs\tda.log`
167
-
-**Linux/Unix**: `~/.tda/logs/tda.log`
168
-
You can check this file if TDA or the MCP server doesn't behave as expected.
169
-
-**Path issues**: Ensure you use absolute paths for the JAR file and the log files you want to parse.
170
-
-**Headless mode**: If you see errors related to `java.awt.HeadlessException`, double-check that `-Djava.awt.headless=true` is set.
171
-
-**Permissions**: Make sure the user running the MCP server has read permissions for the log files.
172
-
-**Memory issues**: If you see `OutOfMemoryError`s, you can increase the memory allocation by setting `-Xmx`.
173
-
174
173
#### 🤖 AI Agent Configuration (Cursor / Junie)
175
174
176
175
To ensure that AI agents use TDA efficiently and don't attempt to read large log files directly (which is slow and expensive), you should configure a **System Prompt**.
@@ -221,6 +220,40 @@ The resulting standalone JAR will also be located in the `tda/target/` directory
221
220
222
221
---
223
222
223
+
## 🛠️ Troubleshooting
224
+
225
+
If you encounter issues while using TDA, check the following sections for guidance.
226
+
227
+
### 1. Logging
228
+
TDA maintains a centralized log file to help diagnose issues. If something isn't working as expected, the log file is the first place to look.
229
+
230
+
#### Log File Locations
231
+
***macOS**: `~/Library/Logs/TDA/tda.log`
232
+
***Windows**: `%LOCALAPPDATA%\TDA\Logs\tda.log`
233
+
***Linux/Unix**: `~/.tda/logs/tda.log`
234
+
235
+
#### Error Indicators (UI Mode)
236
+
In standalone or plugin mode, TDA will display a **red dot** in the status bar (next to the memory indicator) if a critical error has occurred. Hover over the dot to see a tooltip reminding you to check the log file.
237
+
238
+
### 2. MCP Server Specifics
239
+
Running TDA as a headless MCP server has specific requirements:
240
+
241
+
***Headless Environment**: Ensure you pass `-Djava.awt.headless=true` when running the JAR. TDA is a Swing-based application, and the MCP mode must bypass UI initialization.
242
+
***Std-in/Std-out Pollution**: The MCP protocol communicates via `stdin` and `stdout`. Avoid using any commands or scripts that print additional information to `stdout`, as this will corrupt the JSON-RPC stream and cause the AI client to lose connection.
243
+
***Absolute Paths**: When calling `parse_log`, always use **absolute paths** for the log file. The working directory of the MCP server might not be what you expect depending on how your AI client (e.g., Claude Desktop) launches it.
244
+
***Permissions**: Ensure the user running the AI client has read permissions for the log files being analyzed.
245
+
246
+
### 3. Memory Management
247
+
Thread dumps from large production systems can be hundreds of megabytes.
248
+
249
+
***OutOfMemoryErrors**: If TDA crashes or fails to parse a large file, increase the heap size using the `-Xmx` flag:
250
+
```bash
251
+
java -Xmx2g -jar tda.jar
252
+
```
253
+
***Max Logfile Size**: TDA has a safety limit forlog file sizes. You can adjust thisin the **Preferences** dialog (UI mode) or by manually editing the configuration if necessary.
254
+
255
+
---
256
+
224
257
## 📜 License
225
258
TDA is licensed under the **Lesser GNU General Public License (LGPL)**.
TDA (Thread Dump Analyzer) is a powerful tool for parsing and analyzing Java thread dumps, helping you identify performance bottlenecks and deadlocks in seconds.
<h3>TDA - Thread Dump Analyzer -- Version 2.7</h3>
4
+
<h3>TDA - Thread Dump Analyzer -- Version 3.0</h3>
5
5
6
-
<p>Note: This is the 2.7 release of the software, for an usage overview see <b><a href="https://github.com/irockel/tda">README</a> on GitHub</b>.</p>
6
+
<p>Note: This is the 3.0 release of the software, for an usage overview see <b><a href="https://github.com/irockel/tda">README</a> on GitHub</b>.</p>
7
7
8
8
<p>Recent changes are:</p>
9
9
10
-
<h4>Version 2.7</h4>
10
+
<h4>Version 3.0</h4>
11
11
<ul>
12
12
<li>Introduced logging for easier debugging in MCP mode, added red dot in UI mode if error occurred with tooltip to check logfile.</li>
13
13
<li>Experimental support for JSON based jmap thread dumps.</li>
14
-
<li>Support for SMR parsing in thread dumps (Java 11+).</li>
14
+
<li>Support for SMR (Safe Memory Reclamation) parsing in thread dumps (Java 11+).</li>
15
15
<li>Detect stuck Carrier Threads used by Virtual Threads in Java 21+ thread dumps.</li>
16
16
<li>Extended MCP Server for fetching pinned Carrier Threads.</li>
17
17
<li>Added a method to the MCP Server to enable the Agent to fetch a list of threads which are running in native code, including library information if available.</li>
0 commit comments