<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/121721/">https://git.reviewboard.kde.org/r/121721/</a>
     </td>
    </tr>
   </table>
   <br />





<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDevelop.</div>
<div>By Nicolai Hähnle.</div>










<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kdevelop
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I apologize that this ended up as a rather large chunk of code changes. The essential changes are:</p>
<ol style="padding: 0;text-rendering: inherit;margin: 0 0 0 2em;line-height: inherit;white-space: normal;">
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">Use the new IBreakpointController interface, which greatly reduces the coupling between kdevplatform and kdevelop and will allow more changes without worrying about the ABI in the future (the old interface had IBreakpointController implementations poking directly at protected member variables of IBreakpointController).</li>
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">We now listen to async notifications where GDB informs us about new, modified, and deleted breakpoints to keep the breakpoint model up-to-date. This should be both more accurate and more efficient (fewer messages sent between KDevelop and GDB) than the old approach.</li>
<li style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">Interrupting GDB and (if necessary) restarting the inferior is now handled transparently at the DebugSession level rather than in BreakpointController. This should make it easier to coordinate in the long run, e.g. avoiding unnecessary updates of watched variables when the program is only interrupted temporarily.</li>
</ol>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Also of note:
1. Use std::function to allow writing lambdas for the command handler callbacks.
2. SIGSEGV is no longer treated as stopping the interior. I don't see a reason why it should be treated differently from e.g. SIGBUS. Furthermore, te old code would have gotten terribly confused by a debugged process that successfully handles and recovers from a SIGSEGV.
3. Stylistic question: should QSharedPointer or std::shared_ptr be preferred?</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">unit tests pass; manual testing seems fine</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>debuggers/gdb/breakpointcontroller.h <span style="color: grey">(f415922a2cddfadcc56e1fdc712ccc3e09c080b3)</span></li>

 <li>debuggers/gdb/breakpointcontroller.cpp <span style="color: grey">(7a274970bb0dcc78aef946be8efe104a3257aab6)</span></li>

 <li>debuggers/gdb/debugsession.h <span style="color: grey">(57df80437b1d2eea2a0ba7083af58adf19c6a808)</span></li>

 <li>debuggers/gdb/debugsession.cpp <span style="color: grey">(392662440f77a2f1748c8e4c61959bec6a39cb2d)</span></li>

 <li>debuggers/gdb/gdb.h <span style="color: grey">(6c7193bde17da933aa4478d25381c3750b60691e)</span></li>

 <li>debuggers/gdb/gdb.cpp <span style="color: grey">(2ce000903e226b58fc4b8297dda7e7bfb9bd279a)</span></li>

 <li>debuggers/gdb/gdbcommand.h <span style="color: grey">(e3cf5877b11649008014d5c9aca8e570017c7550)</span></li>

 <li>debuggers/gdb/gdbcommand.cpp <span style="color: grey">(8116c48ca86efabf2540066de4d0133fb232269e)</span></li>

 <li>debuggers/gdb/gdbcommandqueue.h <span style="color: grey">(eb676a4afd1598a6b5df92af5044d62bb8d3400a)</span></li>

 <li>debuggers/gdb/gdbcommandqueue.cpp <span style="color: grey">(3ee29de62727caa4c8d61c598c27ee6770dfe8cc)</span></li>

 <li>debuggers/gdb/gdbglobal.h <span style="color: grey">(da6fe329e7aba55433c4fbbc54c5ce193100e971)</span></li>

 <li>debuggers/gdb/unittests/test_gdb.cpp <span style="color: grey">(b9a1a6f41ce83ae3ab523526f69432786617aa24)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/121721/diff/" style="margin-left: 3em;">View Diff</a></p>






  </td>
 </tr>
</table>




  </div>
 </body>
</html>