<node id="629643">
  <nid>629643</nid>
  <type>event</type>
  <uid>
    <user id="27707"><![CDATA[27707]]></user>
  </uid>
  <created>1575391884</created>
  <changed>1575549918</changed>
  <title><![CDATA[Phd Proposal by Xiangyu Li]]></title>
  <body><![CDATA[<p><strong>Title: Developer-Centric Automated Debugging</strong></p>

<p>&nbsp;</p>

<p>Xiangyu Li</p>

<p>School of Computer Science</p>

<p>College of Computing</p>

<p>Georgia Institute of Technology</p>

<p>&nbsp;</p>

<p><strong>Date</strong>: Friday, December 6, 2019</p>

<p><strong>Time</strong>: 3:00pm - 5:00pm (EST)</p>

<p><strong>Location</strong>: Klaus 3100</p>

<p>&nbsp;</p>

<p><strong>Committee</strong>:</p>

<p>Alessandro Orso - Advisor, School of Computer Science,&nbsp;Georgia Institute of Technology</p>

<p>David Devecsery - School of Computer Science,&nbsp;Georgia Institute of Technology</p>

<p>Qirun Zhang - School of Computer Science,&nbsp;Georgia Institute of Technology</p>

<p>Spencer Rugaber - College of Computing,&nbsp;Georgia Institute of Technology</p>

<p>Marcelo d&#39;Amorim - Department of Computer Science,&nbsp;Federal University of Pernambuco</p>

<p>&nbsp;</p>

<p><strong>Abstract</strong>:</p>

<p>Software debugging is an expensive activity that is responsible for a signiﬁcant part of</p>

<p>software maintenance cost. In particular, locating faulty code (i.e., fault localization) is one</p>

<p>of the most challenging parts. In the past years, researchers have proposed many techniques</p>

<p>that aim at fully automating the task of fault localization. Although these techniques are</p>

<p>shown to be effective in reducing the amount of code developers need to inspect to locate</p>

<p>faults, there is growing evidence that they provide developers with limited help in realistic</p>

<p>debugging scenarios. I believe that a practical automated debugging technique should have</p>

<p>human developers at the center of the debugging process rather than trying to completely</p>

<p>replace them.</p>

<p>&nbsp;</p>

<p>In this proposal, I present three projects, two completed and one on-going, that deﬁne</p>

<p>techniques to support developer-centric automated debugging. First, I present Enlighten,</p>

<p>an interactive, feedback-driven fault localization technique. Enlighten supports and</p>

<p>automates developers&rsquo; debugging workﬂow as follows. It 1) uses traditional statistical fault</p>

<p>localization (SFL) to formulate an initial hypothesis of where the fault may be; 2) identiﬁes</p>

<p>a relevant subset of execution that can help support or refute the formulated hypothesis;</p>

<p>3) presents the developer with a query about the identiﬁed execution subset in the form of</p>

<p>a correctness question about the input-output relation of the partial execution; 4) reﬁnes</p>

<p>its hypothesis of the fault by using the developer&rsquo;s feedback; and 5) repeats these steps</p>

<p>until the fault is found. Second, I discuss my work on improving the accuracy of dynamic</p>

<p>slicing, which allows automated debugging techniques that rely on dynamic dependence</p>

<p>analysis to handle a broader range of faults. I present my ﬁnding that existing dynamic</p>

<p>dependence analysis techniques could miss the cause-effect relations between faults and the</p>

<p>observed failures if the faulty program states propagate via incorrect computation of</p>

<p>memory addresses. To address this limitation, I deﬁne the concept of potential memory-address</p>

<p>dependence, which explicitly represents this type of causal relations, and describe an</p>

<p>algorithm that computes it. Third, supporting the developer-centric, automated debugging</p>

<p>workﬂow, which requires collecting, analyzing, and navigating the typically massive amount</p>

<p>of information in the failing execution, can be extremely expensive for non-trivial software</p>

<p>and failures. In fact, many existing interactive debugging techniques are shown to work</p>

<p>well on short executions, but fail to scale to even modest-length executions. My on-going</p>

<p>project aims to address this limitation. By utilizing a record-and-replay system, the technique</p>

<p>efficiently recreates the failing execution, breaks it down into smaller time slices, and</p>

<p>analyzes these slices in a parallelized, and on-demand fashion. I expect this approach to</p>

<p>scale to realistic, potentially long program executions while providing short response time</p>

<p>in the interactive debugging process.</p>
]]></body>
  <field_summary_sentence>
    <item>
      <value><![CDATA[Developer-Centric Automated Debugging]]></value>
    </item>
  </field_summary_sentence>
  <field_summary>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_summary>
  <field_time>
    <item>
      <value><![CDATA[2019-12-06T15:00:00-05:00]]></value>
      <value2><![CDATA[2019-12-06T17:00:00-05:00]]></value2>
      <rrule><![CDATA[]]></rrule>
      <timezone><![CDATA[America/New_York]]></timezone>
    </item>
  </field_time>
  <field_fee>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_fee>
  <field_extras>
      </field_extras>
  <field_audience>
          <item>
        <value><![CDATA[Faculty/Staff]]></value>
      </item>
          <item>
        <value><![CDATA[Public]]></value>
      </item>
          <item>
        <value><![CDATA[Graduate students]]></value>
      </item>
          <item>
        <value><![CDATA[Undergraduate students]]></value>
      </item>
      </field_audience>
  <field_media>
      </field_media>
  <field_contact>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_contact>
  <field_location>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_location>
  <field_sidebar>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_sidebar>
  <field_phone>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_phone>
  <field_url>
    <item>
      <url><![CDATA[]]></url>
      <title><![CDATA[]]></title>
            <attributes><![CDATA[]]></attributes>
    </item>
  </field_url>
  <field_email>
    <item>
      <email><![CDATA[]]></email>
    </item>
  </field_email>
  <field_boilerplate>
    <item>
      <nid><![CDATA[]]></nid>
    </item>
  </field_boilerplate>
  <links_related>
      </links_related>
  <files>
      </files>
  <og_groups>
          <item>221981</item>
      </og_groups>
  <og_groups_both>
          <item><![CDATA[Graduate Studies]]></item>
      </og_groups_both>
  <field_categories>
          <item>
        <tid>1788</tid>
        <value><![CDATA[Other/Miscellaneous]]></value>
      </item>
      </field_categories>
  <field_keywords>
          <item>
        <tid>102851</tid>
        <value><![CDATA[Phd proposal]]></value>
      </item>
      </field_keywords>
  <field_userdata><![CDATA[]]></field_userdata>
</node>
