Data Race Detector
by Devexperts
Important: if something bad happens (DRD doesn't launch, errors occur or smth else), please feel free to contact us: drd-support@devexperts.com. Also we kindly ask to attach all three log files to your bug report. Thanks!
Data Race Detector (DRD) is a tool for dynamic detection of data races in Java programs, implemented as a java agent. DRD works in same JVM with the target application and dynamically detects occuring and possible races. Results are logged to files, for each race additional information is printed: class+method+line number for both accesses, race type, at least one stacktrace.
How to use:
Open config.xml. Find RaceDetection section and assure that rules inside it cover exactly your application and nothing more. Usually it's enough to have one rule based on unique prefix of your application packages. Also check that SyncInterception section is empty and defaultPolicy is "*":
<SyncInterception defaultPolicy="include"/> <RaceDetection defaultPolicy="exclude"> <Rule type="include" path="com/my/company/"/> </RaceDetection>
Open drd.properties. Set "drd.config.dir" and "drd.log.dir" properties:
#Absolute path to desired log dir. I.e. D:\Projects\DRD\log drd.log.dir= #Absolute path to DRD_HOME_DIR\config (if DRD_HOME_DIR=D:\Projects\DRD\ than set this property to D:\Projects\DRD\config drd.config.dir=
Locate exact place where java (javaw, ...) is actually executed to launch your application. Add (prepend) DRD java agent and settings to launch parameters the following:
java -javaagent:DRD_HOME_DIR/drd_agent.jar -Ddrd.settings.file=DRD_HOME_DIR/config/drd.properties ...
That's it! If everything is fine, your application would start normally (most likely it work slower that usual). DRD results would be logged into three files in specified log directory.