- System requirements
- Profiler architecture
- Profiler installation
- Uninstall profiler
- Running the profiler
- Profiler activation
- Welcome screen
- Start profiling
- Profiling overhead
- Snapshots
- Solving performance problems
- CPU profiling
- Thread profiling
- Virtual threads support
- Object allocation profiling
- Memory profiling
- Monitor profiling
- Exception profiling
- Telemetry
- Probes: monitor events of various kinds
- Events in user interface
- Event inspections
- Built-in probes
- Probe classes
- Monitoring method invocation events
- Probe class annotation @MethodPattern
- Callback onEnter()
- Callback onReturn()
- Callback onExit()
- Callbacks onUncaughtException() and onUncaughtExceptionExt()
- Parameter annotation @Param
- Parameter annotation @Params
- Parameter annotation @This
- Parameter annotation @ClassRef
- Parameter annotation @MethodName
- Parameter annotation @MethodTimeMs
- Parameter annotation @MethodTimeNs
- Parameter annotation @MethodParameterTypes
- Parameter annotation @MethodSignature
- Parameter annotation @OnEnterResult
- Parameter annotation @ReturnValue
- Parameter annotation @ThrownException
- Probe application rules
- Data storage
- Inspections: automatic recognition of typical problems
- Automatically trigger actions on event
- Automatic deobfuscation
- Summary
- Filters
- Profiler command line
- Export of profiling results to external formats
- Profiler Java API
- Profiler HTTP API
- Settings
- Troubleshooting and FAQ
Probes: monitor events of various kinds
What is it for?
Get almost unlimited analysis capabilities by recording events specific to your particular application, and automatically recognize problems typical to wide range of applications.
Customizable to fit your needs...
Gather information about your application according to your own rules by setting up your custom probes.
... and available out of the box
Recognize typical problems with the help of built-in probes which are ready to use out of the box. Also, as the source code of the built-in probes is available, use it as a good example should you decide creating custom probes.
What kind of events can be monitored?
-
Enter or exit particular method
Bytecode instrumentation engine will inject calls to your probes to the methods which you specified. The probes are written in Java. You can access method parameters, method return value, the object for which the method is called, as well as intercept uncaught exceptions thrown in the method. This provides virtually unlimited capabilities to monitor applications. Read more...
-
Class load/unload
Class loading probe monitors class load and unload events
Please also consider triggers. They provide a wider range of events to monitor than probes do. However, triggered actions should be chosen from a predefined set, while probes can implement any necessary functionality.
What kind of information can be recorded on event?
Data storage allows you to uniformly record the following information for each event:
- Where it happened: stack trace, thread
- When it happened
- If applicable, event duration and consumed CPU time
- Event-specific numerical or text information. For example, this can be the number of bytes written to a stream, or the URL of processed HTTP request etc. - you can record whatever you want.
Although it is intended to use data storage to gather information, if you wish you can also store it your own way, e.g. write it to your application's log, to a file or simply write to console.
How to access the recorded information?
Probes UI provides rich set of tools to analyze the gathered information, or to export it for external processing.