Known issues

  • Kanzi Monitor disables the local console of the Command Processor when running in Kanzi Studio Preview. You can use the remote console in Kanzi Studio Preview.

  • Kanzi can load plugins from dynamic libraries in an unpredictable order. If other plugins depend on Kanzi Monitor during their initialization, explicitly load Kanzi Monitor from the application during startup. This lets the application make sure that the Kanzi Monitor plugin loads first.

  • When you enable the remote console, Kanzi Monitor attempts to open a remote console and bind to a socket port. This can fail if another application or another Kanzi Monitor instance already uses that port. To resolve this issue, choose a different port number, or avoid running another Kanzi Monitor instance with the remote console enabled at the same time.

  • When you enable the serial console, Kanzi Monitor attempts to open the configured serial port. This can fail if the port does not exist, another application uses it, or it requires elevated privileges. On Windows, virtual COM port drivers (such as com0com) can require test-signed driver mode.

  • On Android, Kanzi Monitor resolves the trace output directory at startup via JNI (Context.getFilesDir()). If the resolution fails (for example, when the plugin loads before any Java entry point has run), the log records Could not resolve Context.getFilesDir() via JNI; leaving SampleCollector output directory unchanged. and trace files land in whichever directory the SampleCollector defaults to instead of the app’s internal files directory. If trace files don’t appear where you expect on Android, check the log for this warning.

  • The perfetto-producer trace writer requires the plugin to be built with -DKZMONITOR_PERFETTO_PRODUCER=ON (pre-built Android binaries already are) AND a platform tracing daemon (Android traced or Linux perfetto). On Windows and platforms without a daemon, the writer is silently a no-op — use the in-process capture mode via PerfettoProducerCaptureSeconds to drive a session yourself, or stay on chrometrace / perfetto for offline output.

  • Android Studio Profiler (Iguana 2023.2 and later) does not expose the Perfetto track_event data source in its “Capture System Activities” task. As a result, a System Trace captured from inside AS Profiler does not show the kanzi.* tracks even when Kanzi Monitor is streaming them through the perfetto-producer writer. Workaround: capture the trace externally with adb shell perfetto -c <config> --txt -o <trace>.pftrace, then open the resulting file in AS Profiler with File → Open — the kanzi.* track-event categories render normally. Android Performance Analyzer (a separate tool) does expose track_event configuration and works as expected. See Using the Profiling Trace service for an example perfetto config.

  • On Android, the kzTrace subsystem (the overwatch.kztrace command, also exposed by the Monitor Web UI Trace tab when “kzTrace (Engine)” is selected and by the MCP server’s capture_kztrace tool) writes to /sdcard/ independently of Kanzi Monitor’s own trace output directory. The Kanzi engine’s logTraceToFile() ignores the path Kanzi Monitor passes and uses its own destination on Android. Capturing a kzTrace from any of these surfaces therefore requires the host application to declare WRITE_EXTERNAL_STORAGE (SDK below 30) or MANAGE_EXTERNAL_STORAGE (SDK 30 and later) in AndroidManifest.xml and to request the runtime permission. If the permission is missing, overwatch.kztrace returns a JSON error of the form {"error":"kzTrace file was not written","hint":"...AndroidManifest..."} and the trace file is not written. The example application under examples/monitor_example/ does not declare these permissions because the Monitor plugin itself no longer needs them; add them to your own host app if you want kzTrace on Android. The Monitor profiling trace (chrometrace, perfetto, and perfetto-producer writers) continues to work on Android without any storage permissions.

See also

Release notes

Migration guides