btrace

BTrace - a safe, dynamic tracing tool for the Java platform

Stars
5.7K
Committers
27

Bot releases are hidden (Show)

btrace - v1.3.7

Published by jbachorik over 8 years ago

Changelog (v1.3.7)

Full Changelog

Implemented enhancements:

  • Improve statsd integration #225

Fixed bugs:

  • 'btracec' emits incomplete diagnostic instances #223
  • 'btracec' mistakenly marks a particular call as unsafe #222
  • Reinject probe does not work #220

Pull Requests

  • Fixing fileRollMaxRolls and fileRollMilliseconds #221
btrace - v1.3.6

Published by jbachorik over 8 years ago

Change Log

v1.3.6

Full Changelog

Implemented enhancements:

  • Allow bundling agent default arguments in attached jar files #219
  • Allow bundling probe descriptors #216

Fixed bugs:

  • Javac compilation error messages are lost when using 'btracec' #215
  • @TargetMethodOrField(fqn = true) not working with Kind.CALL + Where.AFTER #213

Closed issues:

  • how can know which class load #218
  • Usage of @Self and @TargetInstance when probing static methods #212
  • Cannot build with Gradle #210

Merged pull requests:

* This Change Log was automatically generated by github_changelog_generator

btrace - v1.3.5

Published by jbachorik over 8 years ago

Change Log

v1.3.5

Full Changelog

Implemented enhancements:

  • Allow bundling compiled scripts in a jar #209
  • Identifying method scope with BTrace #202
  • Add a convenience method to BTraceUtils to get a field value by its name #201
  • Improve the class filtering process #200
  • Allow to skip retransforming the initially loaded classes #198
  • Needs for tracing return event for 'void' methods only #192
  • Option to send output to a file #188
  • Introduce a proper settings storage to enable running multiple scripts with different settings #187
  • Improve the handling of an array instance in Kind.ARRAY_SET and Kind.ARRAY_GET #185
  • Location Kind.INSTANCEOF and Kind.CHECKCAST should provide info about the desired type #184

Fixed bugs:

  • java.lang.VerifyError: Bad return type (sometimes) #208
  • Enable sharing the output for multiple scripts loaded by the same agent #207
  • Shared methods don't work #189
  • BTrace class transformer might not get unregistered #186

Closed issues:

  • Allow specifying the output dir #206
  • Do not create the output flusher thread if the interval is -1 #199
  • Every TestCase occurs this error:java.lang.IllegalArgumentException! Crazy! #194
  • Unable to create aggregations #193
  • how to install btrace as a plugin in visualvm? #191
  • AggregationFunction.QUANTIZE fails for values larger than Integer.MAX_VALUE #190

Merged pull requests:

  • Improve the class transformation mechanism #211
  • Add access modifiers to the reported method/field fqn values #205 (jbachorik)
  • Anytype void return #204 (jbachorik)
  • Allow specifying an output file (instead of the console) when runninng btrace client #203 (jbachorik)
  • Improved shared methods #197 (jbachorik)

* This Change Log was automatically generated by github_changelog_generator

btrace - v1.3.4

Published by jbachorik almost 9 years ago

Change Log

1.3.4

Full Changelog

Implemented enhancements:

  • Allow AnyType for arguments annotated by @Return #176
  • Instrumentation levels #170 (jbachorik)

Fixed bugs:

  • @Location(Kind.NEW) does not work with parameter annotated by @Return #183
  • MethodInvocationRecorder may provide incomplete data in highly concurrent environment #180
  • RuntimeException while trying to printfield values #179
  • Problems with @Return parameter #174
  • Location(kind = Kind.NEWARRAY) should support flexible "clazz" definition #173
  • Submitting compiled trace script via 'btrace' may not work #164
  • Inconsistent behavior when trying to probe return values from multiple methods #145

Closed issues:

  • BTrace is crashing the applications that is attached with #177
  • SIGSEGV in the main process #172
  • how to run multiple btrace scripts for the same application. #171
  • how to trace a application which is run by using a tcserver which runs tomcat inbuilt #169
  • null pointer exception and illegalstateexception while tracing an application #168
  • connection refused or well-known file is not secure #167
  • unable to open socket file: target process not responding or hotspot vm not loaded #166
  • default trace ouput file created by btracer command is not generating when used in linux terminal #165
  • @OnExit not handled properly after #154 #161
  • Omitting the 'method' argument in @OnMethod counter-intuitively performs match against the handler method name #159
  • Tracing all methods of all available classes can make BTrace crash #154
  • @Duration annotation refused for Kind.CALL #153
  • @OnError requires full Throwable type in the handler method signature #152
  • default trace ouput file created by btracer command is not generating when used in linux terminal #151
  • tracing a *.jar files from command prompt #150
  • Unable to open socket file: target process not responding or HotSpot VM not loaded #139

Merged pull requests:

btrace - BTrace 1.3.3

Published by jbachorik about 9 years ago

Change Log

v1.3.3

Full Changelog

Closed issues:

  • BTrace fails to forward the user defined classpath when attaching to the target application #142
  • ClassFilter.isCandidate() can get corrupted by an unexpected exception #143

* This Change Log was automatically generated by github_changelog_generator

btrace - BTrace 1.3.2

Published by jbachorik about 9 years ago

Change Log

v1.3.2

Full Changelog

Closed issues:

  • BTrace fails to forward the user defined classpath when attaching to the target application #142
  • Native method tracing breaks instrumentation for many Java core classes #140
  • BTraceUtils.Profiling.printSnapshot in @OnExit Method does not print any output #136

Merged pull requests:

  • Run the client handling code asynchronously only when used from the GF3 Flashlight #137 (jbachorik)

* This Change Log was automatically generated by github_changelog_generator

btrace - BTrace 1.3.1

Published by jbachorik over 9 years ago

Change Log

v1.3.1

Full Changelog

Implemented enhancements:

  • Add a rudimentary templating support for the 'scriptOutputFile' argument #132
  • Allow augmenting the return value in unsafe mode #131
  • Feature Request: Add tracing of native methods #115

Closed issues:

  • 'java.lang.NullPointerException' when using @TLS #129
  • 'java.lang.VerifyError: Bad type on operand stack' when using OnTimer #126
  • NPE when trying to access BTraceRuntime in the trace script static initializer #125
  • [BTRACE-10] Porting BTrace to Maven #61

Merged pull requests:

  • Fixes #131. Modifying the Preprocessor to work well with the augmente… #134 (jbachorik)
  • Fixes #132 - Add a rudimentary templating support for the scriptOutpu… #133 (jbachorik)
  • Adding the ability to trace native methods #130 (jbachorik)
  • Support JDK 1.7+ on OS X #128 (oschrenk)
  • Instrumentation regressions in 1.3.0.1 #127 (jbachorik)

* This Change Log was automatically generated by github_changelog_generator

btrace - BTrace 1.3 HotFix

Published by jbachorik over 9 years ago

In BTrace 1.3 we identified two critical issues requiring an immediate fix

  • #124 Problems with class literals in unsafe mode (regression)
  • #123 Computing frames by ASM may cause LinkageError in certain situations (long standing intermittent issue currently made easily reproducible on Scala based application)

This HotFix is addressing these two critical issues.

btrace - BTrace 1.3

Published by jbachorik over 9 years ago

Fixed Issues

What's New

#98 Services

Now it is possible to enhance the core BTrace functionality via external services. You can read more about it in this blog entry

#112 StatsD Integration

In addition to printing the output to stdout or an external file it is now possible to use statsd backend to process the metrics. Read more in blog

Sampled Tracing

Capturing and timing all the method invocations is a great way of obtaining a relatively precise application performance profile. Unless you need to do that for short and frequently called methods, that is. In those cases sampled tracing will come very handy.

#95 String concatenation via "+"

In addition to BTraceUtils.strcat(str1, str2) it is now possible to use more standard str1 + str2

Therefore, println("Hello" + "world") is a valid BTrace statement.

Improved Launchers

Some BTrace launchers (btrace and btracer) received a facelift allowing them to receive and process various command line options.

btrace

Option Description
--version Show the version
-v Run in verbose mode
-u Run in unsafe mode
-d <path> Dump the instrumented classes to the specified path
-pd <path> The search path for the probe XML descriptors
-classpath <path> Specify where to find user class files and annotation processors
-cp <path> Specify where to find user class files and annotation processors
-I <path> Specify where to find include files
-p <port> Specify port to which the btrace

btracer

Option Description
--version Show BTrace version
-v Run in verbose mode
-u Run in unsafe mode
-p BTrace agent server port
-statsd <host>[:<port>] Use this StatsD server
-o <file> The path to a file the btrace agent will store its output
-d <path> Dump modified classes to the provided location
-pd <lpath> Search for the probe XML descriptors here
--noserver Don't start the socket server
--stdout Redirect the btrace output to stdout instead of writing it to an arbitrary file
-bcp <cp> Append to bootstrap class path
-scp <cp> Append to system class path
-h This message

#118 Gradle

A great contribution from Thomas Mohme. Thanks to this it is now possible to use Gradle to build and test BTrace.

cd <btrace>
# build the project
./gradlew --daemon assemble
# run tests
./gradlew --daemon check
# build distributions
./gradlew --daemon buildDistributions

Performance Improvements

A bunch of performance improvements in the BTrace core have been delivered

  • #67 Unbounded queue used for dispatching commands may slow down application
  • #90 Optimize the BTraceRuntime.enter/leave/get() methods
  • #92 Replace Collections.synchronizedMap() with ConcurrentHashMap in BTraceRuntime
  • #93 FileClient issues flush() after each single data command store
  • #94 WireIO flushes after each command
  • #109 Improve performance of MethodInvocationProfiler

DEB and RPM Packaging

BTrace is available as DEB and RPM packages.