<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vangelis Tsiatsianas</title>
    <description>The latest articles on DEV Community by Vangelis Tsiatsianas (@vangelists).</description>
    <link>https://dev.to/vangelists</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F391699%2F87128cd2-b284-44ea-9aeb-53581dbd1e92.png</url>
      <title>DEV Community: Vangelis Tsiatsianas</title>
      <link>https://dev.to/vangelists</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vangelists"/>
    <language>en</language>
    <item>
      <title>Live Reverse Debugging in LLDB</title>
      <dc:creator>Vangelis Tsiatsianas</dc:creator>
      <pubDate>Thu, 21 May 2020 13:11:40 +0000</pubDate>
      <link>https://dev.to/vangelists/live-reverse-debugging-in-lldb-2nf0</link>
      <guid>https://dev.to/vangelists/live-reverse-debugging-in-lldb-2nf0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Live reverse debugging&lt;/strong&gt; (also known as &lt;strong&gt;reverse execution&lt;/strong&gt;) enables the programmer to step backwards and replay the execution of a program during a live debugging session.&lt;/p&gt;

&lt;p&gt;In the context of my master’s thesis, I created a proof of concept for live reverse debugging based on the LLDB debugger.&lt;/p&gt;

&lt;p&gt;Doing so involved familiarizing myself with the LLDB codebase and directly modifying it to add live reverse debugging capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Student Developer Pack
&lt;/h2&gt;

&lt;p&gt;During development, I made sure to closely follow the &lt;code&gt;master&lt;/code&gt; branch of the LLVM project's repository, whose LLDB is a part of. However, due to the amount of daily commits in the LLVM project repository, I had a hard time tracking all the changes in LLDB that might affect my project.&lt;/p&gt;

&lt;p&gt;As a result, I decided to take advantage of the &lt;strong&gt;Student Developer Pack&lt;/strong&gt; and the &lt;strong&gt;Mailgun&lt;/strong&gt; offer in particular, in order to receive email notifications whenever a commit that modified files belonging to LLDB was pushed to the LLVM project repository.&lt;/p&gt;

&lt;p&gt;This was achieved with the help of a lightweight service written in Swift and hosted on Vapor Cloud that receives notifications about all pushed commits via GitHub webhooks, filters the ones that contain modifications to LLDB and emails me through &lt;strong&gt;Mailgun&lt;/strong&gt; information about the commits:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mkKqJWMk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/531akSO.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mkKqJWMk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/531akSO.png" alt="LLDB Commit Notification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This service took about a day to set up and saved me multiple hours during the course of this project (about 10 months) of manually scanning through the commit log for commits related to LLDB and examining one by one for modified files.&lt;/p&gt;

&lt;p&gt;Last but not least, the free &lt;strong&gt;GitHub Pro&lt;/strong&gt; subscription offered through the &lt;strong&gt;Student Developer Pack&lt;/strong&gt; enabled me to keep my work private until it was ready for prime time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/419351406" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vWogaON8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-28d89282e0daa1e2496205e2f218a44c755b0dd6536bbadf5ed5a44a7ca54716.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/vangelists"&gt;
        vangelists
      &lt;/a&gt; / &lt;a href="https://github.com/vangelists/llvm-project"&gt;
        llvm-project
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Proof of Concept for Live Reverse Debugging in LLDB (see wiki)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
The LLVM Compiler Infrastructure&lt;/h1&gt;
&lt;p&gt;This directory and its sub-directories contain source code for LLVM
a toolkit for the construction of highly optimized compilers
optimizers, and run-time environments.&lt;/p&gt;
&lt;p&gt;The README briefly describes how to get started with building LLVM
For more information on how to contribute to the LLVM project, please
take a look at the
&lt;a href="https://llvm.org/docs/Contributing.html" rel="nofollow"&gt;Contributing to LLVM&lt;/a&gt; guide.&lt;/p&gt;
&lt;h2&gt;
Getting Started with the LLVM System&lt;/h2&gt;
&lt;p&gt;Taken from &lt;a href="https://llvm.org/docs/GettingStarted.html" rel="nofollow"&gt;https://llvm.org/docs/GettingStarted.html&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
Overview&lt;/h3&gt;
&lt;p&gt;Welcome to the LLVM project!&lt;/p&gt;
&lt;p&gt;The LLVM project has multiple components. The core of the project is
itself called "LLVM". This contains all of the tools, libraries, and header
files needed to process intermediate representations and converts it into
object files.  Tools include an assembler, disassembler, bitcode analyzer, and
bitcode optimizer.  It also contains basic regression tests.&lt;/p&gt;
&lt;p&gt;C-like languages use the &lt;a href="http://clang.llvm.org/" rel="nofollow"&gt;Clang&lt;/a&gt; front end.  This
component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode
-- and from there…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/vangelists/llvm-project"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>devgrad2020</category>
      <category>octograd2020</category>
      <category>githubsdp</category>
      <category>lldb</category>
    </item>
  </channel>
</rss>
