do stack traces help developers fix bugs?

16
at java.io.DataInputStream.readUnsignedShor at java.io.DataInputStream.readUTF(Unknown at java.io.DataInputStream.readUTF(Unknown at org.eclipse.core.internal.dtree.DataTree at org.eclipse.core.internal.dtree.DataTree at org.eclipse.core.internal.watson.Element at org.eclipse.core.internal.watson.Element at org.eclipse.core.internal.watson.Element at org.eclipse.core.internal.watson.Element at org.eclipse.core.internal.resources.Work at org.eclipse.core.internal.resources.Work at org.eclipse.core.internal.resources.Save at org.eclipse.core.internal.resources.Save at org.eclipse.core.internal.resources.Save at org.eclipse.core.internal.resources.Work at org.eclipse.core.internal.resources.Work at org.eclipse.core.resources.ResourcesPlug at org.eclipse.core.internal.plugins.Plugin at org.eclipse.core.internal.runtime.Intern at org.eclipse.core.internal.plugins.Plugin at org.eclipse.core.internal.plugins.Plugin at org.eclipse.core.internal.plugins.Plugin at org.eclipse.core.internal.plugins.Plugin at org.eclipse.core.internal.boot.Delegatin at org.eclipse.core.internal.boot.Delegatin at org.eclipse.core.internal.boot.Delegatin at org.eclipse.core.internal.boot.Delegatin at org.eclipse.core.internal.boot.Delegatin at org.eclipse.core.internal.boot.Delegatin at java.lang.ClassLoader.loadClass (Unknown at java.lang.ClassLoader.loadClassInternal at java.lang.Class.newInstance0 (Native Met at java.lang.Class.newInstance (Unknown Sou at org.eclipse.core.internal.plugins.Plugin at org.eclipse.core.internal.plugins.Plugin at org.eclipse.core.internal.plugins.Config at org.eclipse.core.internal.runtime.Intern at java.lang.reflect.Method.invoke(Native M at org.eclipse.core.internal.boot.InternalB at org.eclipse.core.internal.boot.InternalB at org.eclipse.core.boot.BootLoader.run (Bo at java.lang.reflect.Method.invoke (Native at org.eclipse.core.launcher.Main.basicRun Do Stack Traces Help Developers Fix Bugs? Adrian Schröter University of Victoria Nicolas Bettenburg Queens University Rahul Premraj VU University Amsterdam

Upload: adrian-schroeter

Post on 25-Jun-2015

527 views

Category:

Technology


0 download

DESCRIPTION

This is a presentation I gave at MSR (www.msrconf.org) in Cape Town, South Africa.

TRANSCRIPT

Page 1: Do Stack Traces Help Developers Fix Bugs?

at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89) at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453) at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487) at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702) at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744) at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source) at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163) at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735) at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)

Do Stack Traces Help Developers Fix Bugs?

Adrian SchröterUniversity of Victoria

Nicolas BettenburgQueens University

Rahul PremrajVU University Amsterdam

Page 2: Do Stack Traces Help Developers Fix Bugs?

java.io.EOFException

at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source)

at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126)

at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89)

at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107)

at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453)

at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487)

at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)

at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)

at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)

at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)

at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)

at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)

at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)

at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)

at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)

at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)

at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)

at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)

at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)

at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)

at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)

at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)

at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)

at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)

at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)

at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)

at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)

at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)

at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)

at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)

at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)

at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)

at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)

at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)

at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)

at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)

at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)

at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)

at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)

at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)

at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)

at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)

at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)

at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)

at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)

at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)

at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)

at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)

at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)

at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)

at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)

at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)

at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)

at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)

at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)

at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

A stack trace from an

Eclipse bug report

Page 3: Do Stack Traces Help Developers Fix Bugs?

java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92)

Page 4: Do Stack Traces Help Developers Fix Bugs?

java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92)

Is there empirical evidence showing their helpfulness?

Page 5: Do Stack Traces Help Developers Fix Bugs?

Overview

Are Bugs Fixed in Methods in Stack Traces?

Which Part of the Stack Trace is Most Helpful?

Are multipleStack Trace better

than one?Do Stack Traces

Help Fix Bugs Faster?

1 2

3 4

Page 6: Do Stack Traces Help Developers Fix Bugs?

java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89) at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487) at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702) at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744) at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source) at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163) at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735) at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200) at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937)

Are Bugs Fixed in Methods in Stack Traces?

Page 7: Do Stack Traces Help Developers Fix Bugs?

Are Bugs Fixed in MEthods in Stack Traces?

Bugzilla DB CVS

Linking Fixes

to Changes

Page 8: Do Stack Traces Help Developers Fix Bugs?

Do Stack Traces Help Developers Fix Bugs?

0 2,250 4,500 6,750 9,000

8580

3940

2321#with

fix frame

#linked

#bugs fixed with traces

Page 9: Do Stack Traces Help Developers Fix Bugs?

java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89) at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453) at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487) at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702) at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744) at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source) at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163) at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735) at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200) at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)

Which Part of the Stack Trace is Most Helpful?

Page 10: Do Stack Traces Help Developers Fix Bugs?

0 750 1,500 2,250 3,000

40%

2321#with

fix frametop-1

Which Part of the Stack Trace is Most Helpful?

top-6

top-10

60%

90%

Page 11: Do Stack Traces Help Developers Fix Bugs?

Single Stack Trace

Multiple Stack Traces

0 1,500 3,000 4,500 6,000

Fixed Bugs Open Bugs

5531

3210

3049

1157

Are multiple Stack Trace better than one?

Page 12: Do Stack Traces Help Developers Fix Bugs?

Single Stack Trace

Multiple Stack Traces

0 1,500 3,000 4,500 6,000

Fixed Bugs Open Bugs

5531

3210

3049

1157

Are multiple Stack Trace better than one?

63% vs. 72% fix rate

Page 13: Do Stack Traces Help Developers Fix Bugs?

Do Stack Traces Help Fix Bugs Faster?

Median Life Time

Average Life Time

0 10 20 30 40

with Fix Frame without Fix Frame

Page 14: Do Stack Traces Help Developers Fix Bugs?

• Higher chance of getting your bugs fixed

It Pays to Go the Extra Mile!

Page 15: Do Stack Traces Help Developers Fix Bugs?

• Higher chance of getting your bugs fixed

• Your bug gets fixed sooner

It Pays to Go the Extra Mile!

Page 16: Do Stack Traces Help Developers Fix Bugs?

• Higher chance of getting your bugs fixed

• Your bug gets fixed sooner

• Developers know where to fix your bug

It Pays to Go the Extra Mile!