From b01f837e1555ce03af937f7c6cb1e607e9b74bda Mon Sep 17 00:00:00 2001 From: SCHIEMSKY Mael Date: Thu, 5 Mar 2026 15:08:09 +0100 Subject: [PATCH 1/2] feat : add a debug option --- README.md | 5 ++++- src/main/java/fr/bl/drit/flow/agent/AgentMain.java | 10 ++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1f8539d..4ced80e 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ The jar is generated in `build/libs/`. Attach the agent using the `-javaagent` option and provide arguments as comma-separated `key=value` pairs: ```sh -java -javaagent:path/to/flow-agent.jar=target=,out=[,format=binary|jsonl][,optimize=][,ids=] \ +java -javaagent:path/to/flow-agent.jar=target=,out=[,format=binary|jsonl][,optimize=][,ids=][,bebug=true] \ -jar your-application.jar ``` @@ -60,6 +60,9 @@ java -javaagent:path/to/flow-agent.jar=target=,out=[,fo * **`ids`** (optional) Path to an existing ID mapping file to reuse. +* **`debug`** (optional) + Activate a listener that show instrumentation events and errors + ### Examples Record calls using the default (binary) format: diff --git a/src/main/java/fr/bl/drit/flow/agent/AgentMain.java b/src/main/java/fr/bl/drit/flow/agent/AgentMain.java index 19bf658..28a53cd 100644 --- a/src/main/java/fr/bl/drit/flow/agent/AgentMain.java +++ b/src/main/java/fr/bl/drit/flow/agent/AgentMain.java @@ -91,6 +91,7 @@ private static void init(String agentArgs, Instrumentation inst) { final String outputPath = args.get("out"); final String format = args.getOrDefault("format", "binary"); final String optimizePath = args.get("optimize"); + final Boolean debug = args.getOrDefault("debug", "false").equalsIgnoreCase("true"); String mappingPath = args.get("ids"); // can be overwritten if optimize is used if (target.isEmpty()) { @@ -209,9 +210,14 @@ private static void init(String agentArgs, Instrumentation inst) { (builder, typeDescription, classLoader, module, protectionDomain) -> builder.visit(advice.on(methodMatcher))); - // agentBuilder = - // agentBuilder.with(AgentBuilder.Listener.StreamWriting.toSystemOut()); + // === debug section === + // add a listener to print instrumentation events if debug is enabled + if (debug) { + agentBuilder = agentBuilder.with(AgentBuilder.Listener.StreamWriting.toSystemOut()); + } + + agentBuilder.installOn(inst); } From 67b4ea4b1036b7b4d08bd46ec3ac0050cc8336fa Mon Sep 17 00:00:00 2001 From: SCHIEMSKY Mael Date: Thu, 5 Mar 2026 15:57:32 +0100 Subject: [PATCH 2/2] fix : some changes to feat the review --- README.md | 4 ++-- src/main/java/fr/bl/drit/flow/agent/AgentMain.java | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4ced80e..f78cd83 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ The jar is generated in `build/libs/`. Attach the agent using the `-javaagent` option and provide arguments as comma-separated `key=value` pairs: ```sh -java -javaagent:path/to/flow-agent.jar=target=,out=[,format=binary|jsonl][,optimize=][,ids=][,bebug=true] \ +java -javaagent:path/to/flow-agent.jar=target=,out=[,format=binary|jsonl][,optimize=][,ids=][,debug=true] \ -jar your-application.jar ``` @@ -61,7 +61,7 @@ java -javaagent:path/to/flow-agent.jar=target=,out=[,fo Path to an existing ID mapping file to reuse. * **`debug`** (optional) - Activate a listener that show instrumentation events and errors + it enables debug mode, which adds debugging information to the agent logs. ### Examples diff --git a/src/main/java/fr/bl/drit/flow/agent/AgentMain.java b/src/main/java/fr/bl/drit/flow/agent/AgentMain.java index 28a53cd..2ad4268 100644 --- a/src/main/java/fr/bl/drit/flow/agent/AgentMain.java +++ b/src/main/java/fr/bl/drit/flow/agent/AgentMain.java @@ -91,7 +91,7 @@ private static void init(String agentArgs, Instrumentation inst) { final String outputPath = args.get("out"); final String format = args.getOrDefault("format", "binary"); final String optimizePath = args.get("optimize"); - final Boolean debug = args.getOrDefault("debug", "false").equalsIgnoreCase("true"); + final boolean debug = args.getOrDefault("debug", "false").equalsIgnoreCase("true"); String mappingPath = args.get("ids"); // can be overwritten if optimize is used if (target.isEmpty()) { @@ -210,13 +210,10 @@ private static void init(String agentArgs, Instrumentation inst) { (builder, typeDescription, classLoader, module, protectionDomain) -> builder.visit(advice.on(methodMatcher))); - // === debug section === - // add a listener to print instrumentation events if debug is enabled if (debug) { agentBuilder = agentBuilder.with(AgentBuilder.Listener.StreamWriting.toSystemOut()); } - agentBuilder.installOn(inst); }