# Debugging options for the org.eclipse.core.runtime plugin

# Turn on general debugging for the org.eclipse.core.runtime plugin.
# Also displays overall startup time.
org.eclipse.core.runtime/debug=false

# Prints out values of OS, WS, NL, and ARCH
org.eclipse.core.runtime/debug/context=false

# Prints debug information on running background jobs
org.eclipse.core.runtime/jobs=false
# Includes current date and time in job debug information
org.eclipse.core.runtime/jobs/timing=false
# Computes location of error on mismatched IJobManager.beginRule/endRule
org.eclipse.core.runtime/jobs/beginend=false
# Pedantic assertion checking on locks and deadlock reporting
org.eclipse.core.runtime/jobs/locks=false
# Throws an IllegalStateException when deadlock occurs
org.eclipse.core.runtime/jobs/errorondeadlock=false

# Prints time taken by Plugin constructors and startup() methods.
org.eclipse.core.runtime/timing/startup=false

# Prints time taken by Plugin.shutdown() methods.
org.eclipse.core.runtime/timing/shutdown=false

# Turn on debugging for the registry.
org.eclipse.core.runtime/registry/debug=false
# Specify a filename for a user-readable form of the plugin registry to be written to.
org.eclipse.core.runtime/registry/debug/dump=
org.eclipse.core.runtime/registry/debug/resolve=false
org.eclipse.core.runtime/registry/debug/events/plugin=false
org.eclipse.core.runtime/registry/debug/events/extension=false

# Turn on debugging for the class loader.
org.eclipse.core.runtime/loader/debug=false
# Display when class loaders are created.
org.eclipse.core.runtime/loader/debug/create=false
# Display when plugins are activated
org.eclipse.core.runtime/loader/debug/activateplugin=false
# Debug all class loader actions (finding resource, classes, libraries)
org.eclipse.core.runtime/loader/debug/actions=false
# Debug success case only
org.eclipse.core.runtime/loader/debug/success=false
# Debug failure case only
org.eclipse.core.runtime/loader/debug/failure=false
# Set filters for types of resources to debug. (e.g. org.eclipse.core.*)
org.eclipse.core.runtime/loader/debug/filter/loader=*
org.eclipse.core.runtime/loader/debug/filter/class=*
org.eclipse.core.runtime/loader/debug/filter/resource=*
org.eclipse.core.runtime/loader/debug/filter/native=*
# Debug use of the classloader package prefix enhancement
org.eclipse.core.runtime/loader/debug/prefixes=false
org.eclipse.core.runtime/loader/debug/prefixes/success=false
org.eclipse.core.runtime/loader/debug/prefixes/failure=false
org.eclipse.core.runtime/loader/debug/properties=false

# Turn on debugging in the support for non-local plugins.
org.eclipse.core.runtime/url/debug=false
org.eclipse.core.runtime/url/debug/connect=false
org.eclipse.core.runtime/url/debug/cachelookup=false
org.eclipse.core.runtime/url/debug/cachecopy=false

# Turn on debugging for install/update.
org.eclipse.core.runtime/config/debug=false

# Turn on debugging for customization of default preference settings
org.eclipse.core.runtime/preferences/debug=false

# Turn on debugging for the plugin stopper
org.eclipse.core.runtime/debug/pluginstopper=false