From d5f005b4409df803c79f4be91bb75dbbcb1fd73b Mon Sep 17 00:00:00 2001 From: Jorge Gorbe Date: Thu, 29 Nov 2012 19:40:37 +0100 Subject: [PATCH] Plot sample. Slides. --- samples/view.py | 6 +++ slides/data-struct-viewer.jpg | Bin 0 -> 29094 bytes slides/ddd1.png | Bin 0 -> 23938 bytes slides/ddd2.png | Bin 0 -> 33211 bytes slides/index.html | 78 ++++++++++++++++++++++------- slides/reveal.js/css/theme/sky.css | 4 +- slides/yao.jpg | Bin 0 -> 20705 bytes 7 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 slides/data-struct-viewer.jpg create mode 100644 slides/ddd1.png create mode 100644 slides/ddd2.png create mode 100644 slides/yao.jpg diff --git a/samples/view.py b/samples/view.py index e3ebb88..5820da9 100644 --- a/samples/view.py +++ b/samples/view.py @@ -8,6 +8,12 @@ import math import random import sys, traceback +# === NOTAS PARA LA ResaCON === +# +# Funciones interesantes: +# - find_outgoing_pointers +# - GdbValueViewer.visit_value + def address_to_uint(addr): return int(addr.cast(gdb.lookup_type("unsigned int"))) diff --git a/slides/data-struct-viewer.jpg b/slides/data-struct-viewer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6f3e2e1ea9ae068cc59118ff6a1453a18f04045 GIT binary patch literal 29094 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%0Ah7vQ5#HFr>l&zq*Py?L{+{ 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 e!Vb0xwX4m$Hdl-iB!o>;#zX<@F!(t`? literal 0 HcmV?d00001 diff --git a/slides/ddd1.png b/slides/ddd1.png new file mode 100644 index 0000000000000000000000000000000000000000..c9bbac04ad056a23f2065e4a4bb350278a764bb3 GIT binary patch literal 23938 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 literal 0 HcmV?d00001 diff --git a/slides/ddd2.png b/slides/ddd2.png new file mode 100644 index 0000000000000000000000000000000000000000..91ec5de5714ef516f1d4796672307fd22da78957 GIT binary patch literal 33211 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 literal 0 HcmV?d00001 diff --git a/slides/index.html b/slides/index.html index f79823c..a0e35fb 100644 --- a/slides/index.html +++ b/slides/index.html @@ -68,7 +68,8 @@
-

Anyway...

+

Let's talk about gdb anyway

+
@@ -329,29 +330,69 @@ DoNothingCommand() # and instance it
-

Demo

+

Demos

-

Did you know...?

-

GDB has many other semi-unknown cool features (which I won't talk about today)

-
    -
  • Debug info in external files
    Debug info can be moved from compiled objects to separate files, and still use it with gdb (like PDBs in VS)
  • -
  • Reverse debugging
    GDB can record (some finite amount of) program history and perform backwards stepping/running.
  • -
  • JIT interface
    A JIT can generate debug symbols and pass them on-the-fly to gdb to ease debugging (supported by LLVM!).
  • -
+

plotarray.py

+
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()
+
+

(simplified version)

+ +
+

Not exactly new ideas...

+

DDD did these things ages ago.

+ + +

BROTIP: Andreas Zeller, original author of DDD, has a nice + online course on debugging techniques + at Udacity

+
+ +
+
+

Did you know...?

+

GDB has many other semi-unknown cool features (which I won't talk about today)

+
    +
  • Debug info in external files
    Debug info can be moved from compiled objects to separate files, and still use it with gdb (like PDBs in VS)
  • +
  • Reverse debugging
    GDB can record (some finite amount of) program history and perform backwards stepping/running.
  • +
  • JIT interface
    A JIT can generate debug symbols and pass them on-the-fly to gdb to ease debugging (supported by LLVM!).
  • +
+
+ +
+

Wish list

+
    +
  • + Symbol and source server support
    + 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 Bruce Dawson's great post +
  • +
+
@@ -384,6 +425,7 @@ DoNothingCommand() # and instance it 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 diff --git a/slides/reveal.js/css/theme/sky.css b/slides/reveal.js/css/theme/sky.css index 06da5c2..cb95196 100644 --- a/slides/reveal.js/css/theme/sky.css +++ b/slides/reveal.js/css/theme/sky.css @@ -85,8 +85,8 @@ body { .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; diff --git a/slides/yao.jpg b/slides/yao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b16c5492e36341fa74d128d21872fcffbafa565f GIT binary patch literal 20705 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 E0eaZ7vj6}9 literal 0 HcmV?d00001 -- 2.34.1
-

Wish list

-
+

view.py

+