<node id="646317">
  <nid>646317</nid>
  <type>event</type>
  <uid>
    <user id="27707"><![CDATA[27707]]></user>
  </uid>
  <created>1617989204</created>
  <changed>1617989204</changed>
  <title><![CDATA[PhD Defense by Xiangyu Li]]></title>
  <body><![CDATA[<p><strong>Title: Developer-Centric Automated Debugging</strong></p>

<p>&nbsp;</p>

<p><strong>Xiangyu Li</strong></p>

<p>Ph.D. Candidate in Computer Science</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>: Monday, April 26, 2021</p>

<p><strong>Time</strong>: 9:00 AM - 11:00 AM (ET)</p>

<p><strong>Location</strong>: <a href="https://bluejeans.com/648661869">https://bluejeans.com/648661869</a></p>

<p>&nbsp;</p>

<p><strong>Committee</strong>:</p>

<p>Dr. Alessandro Orso - Advisor, School of Computer Science, Georgia Institute of Technology</p>

<p>Dr. David Devecsery - School of Computer Science, Georgia Institute of Technology</p>

<p>Dr. Qirun Zhang - School of Computer Science, Georgia Institute of Technology</p>

<p>Dr. Spencer Rugaber - College of Computing, Georgia Institute of Technology</p>

<p>Dr. Marcelo d&#39;Amorim - Department of Computer Science, 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 significant part of</p>

<p>software maintenance cost. In particular, locating faulty code (i.e., fault localization) is</p>

<p>one 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 dissertation, I present three of my techniques that support developer-centric automated</p>

<p>debugging. First, I present ENLIGHTEN, an interactive, feedback-driven fault localization</p>

<p>technique. ENLIGHTEN supports and automates developers&rsquo; debugging workflow as follows.</p>

<p>It 1) uses traditional statistical fault localization (SFL) to formulate an initial hypothesis</p>

<p>of where the fault may be; 2) identifies a relevant subset of execution that can help support</p>

<p>or refute the formulated hypothesis; 3) presents the developer with a query about the identified</p>

<p>execution subset in the form of a correctness question about the input-output relation of the</p>

<p>partial execution; 4) refines its hypothesis of the fault by using the developer&rsquo;s feedback; and</p>

<p>5) repeats these steps until the fault is found. Second, I discuss my work on improving the</p>

<p>accuracy of dynamic dependence analysis, which is a powerful tool for developers to investigate</p>

<p>program behavior in an interactive debugging setting and a foundation for many automated debugging</p>

<p>techniques to model dynamic execution semantics. I present my finding 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 memory</p>

<p>addresses. To address this limitation, I define the concept of potential memory-address dependence,</p>

<p>which explicitly represents this type of causal relations, and describe an algorithm that computes</p>

<p>it. Third, I present TESSERACT, a technique that improves the scalability of dynamic dependency</p>

<p>analysis in the context of interactive debugging. Many existing dependency-based debugging</p>

<p>techniques are shown to work well on short executions, but fail to scale to even modest-length ones.</p>

<p>TESSERACT addresses this limitation by utilizing a record-and-replay system to efficiently recreate</p>

<p>the failing execution, break it down into small time slices, and analyze these slices in a</p>

<p>parallelized, and on-demand fashion.</p>

<p>&nbsp;</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[2021-04-26T10:00:00-04:00]]></value>
      <value2><![CDATA[2021-04-26T12:00:00-04: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[https://bluejeans.com/648661869]]></url>
      <title><![CDATA[Bluejeans]]></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>100811</tid>
        <value><![CDATA[Phd Defense]]></value>
      </item>
      </field_keywords>
  <field_userdata><![CDATA[]]></field_userdata>
</node>
