</section>
<section>
- <h1> Anyway... </h1>
+ <h2>Let's talk about gdb anyway</h2>
+ <img src="yao.jpg">
</section>
<section>
</section>
<section>
- <h1>Demo</h1>
+ <h1>Demos</h1>
</section>
<section>
- <h2>Did you know...?</h2>
- <p> GDB has many other semi-unknown cool features (which I won't talk about today) </p>
- <ul>
- <li> <b>Debug info in external files</b> <br> Debug info can be moved from compiled objects to separate files, and still use it with gdb (like PDBs in VS)</li>
- <li> <b>Reverse debugging</b> <br> GDB can record (some finite amount of) program history and perform backwards stepping/running. </li>
- <li> <b>JIT interface</b> <br> A JIT can generate debug symbols and pass them on-the-fly to gdb to ease debugging (supported by LLVM!). </li>
- </ul>
+ <h2>plotarray.py</h2>
+<pre><code>import gdb
+import matplotlib.pyplot as plt
+
+class PlotterCommand(gdb.Command):
+ def __init__(self):
+ super(PlotterCommand, self).__init__("plot",
+ gdb.COMMAND_DATA,
+ gdb.COMPLETE_SYMBOL)
+ def invoke(self, arg, from_tty):
+ args = gdb.string_to_argv(arg)
+ v = gdb.parse_and_eval(args[0])
+ t = v.type.strip_typedefs()
+ n = t.sizeof / t.target().sizeof
+ l = [float(v[i]) for i in range(n)]
+ plt.plot(l)
+ plt.show()
+
+PlotterCommand()
+</code></pre>
+ <p><small>(simplified version)</small></p>
</section>
<section>
- <h2>Wish list</h2>
- <ul>
- <li>
- <b>Symbol and source server support</b><br>
- Central store for symbols of every build, so you can always retrieve the correct version automatically
- without distributing debug info to users. Also, integration with SCM to retrieve the matching source code.
- See <a href="http://randomascii.wordpress.com/2011/11/11/source-indexing-is-underused-awesomeness/">Bruce Dawson's great post</a>
- </li>
- </ul>
+ <h2>view.py</h2>
+ </section>
+
+ <section>
+ <h2>Not exactly new ideas...</h2>
+ <p> <a href="http://www.gnu.org/software/ddd/">DDD</a> did these things ages ago. </p>
+ <img src="ddd1.png" width="400">
+ <img src="ddd2.png" width="400">
+ <p> <b>BROTIP:</b> Andreas Zeller, original author of DDD, has a nice
+ <a href="http://www.udacity.com/overview/Course/cs259/CourseRev/1">online course on debugging techniques</a>
+ at Udacity </p>
+ </section>
+
+ <section>
+ <section>
+ <h2>Did you know...?</h2>
+ <p> GDB has many other semi-unknown cool features (which I won't talk about today) </p>
+ <ul>
+ <li> <b>Debug info in external files</b> <br> Debug info can be moved from compiled objects to separate files, and still use it with gdb (like PDBs in VS)</li>
+ <li> <b>Reverse debugging</b> <br> GDB can record (some finite amount of) program history and perform backwards stepping/running. </li>
+ <li> <b>JIT interface</b> <br> A JIT can generate debug symbols and pass them on-the-fly to gdb to ease debugging (supported by LLVM!). </li>
+ </ul>
+ </section>
+
+ <section>
+ <h2>Wish list</h2>
+ <ul>
+ <li>
+ <b>Symbol and source server support</b><br>
+ Central store for symbols of every build, so you can always retrieve the correct version automatically
+ without distributing debug info to users. Also, integration with SCM to retrieve the matching source code.
+ See <a href="http://randomascii.wordpress.com/2011/11/11/source-indexing-is-underused-awesomeness/">Bruce Dawson's great post</a>
+ </li>
+ </ul>
+ </section>
</section>
<section>
controls: true,
progress: true,
history: true,
+ rollingLinks: false,
theme: Reveal.getQueryHash().theme || "sky", // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'linear', // default/cube/page/concave/zoom/linear/none
.reveal section img {
margin: 15px;
background: rgba(255, 255, 255, 0.12);
- border: 4px solid #333333;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ /*border: 4px solid #333333;*/
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-ms-transition: all .2s linear;