<div dir="ltr">This is cool, I just did some assembly debugging yesterday, and wished it was easier :)</div><div class="gmail_extra"><br><div class="gmail_quote">On 20 April 2017 at 22:51, Jim Ingham via lldb-commits <span dir="ltr"><<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: jingham<br>
Date: Thu Apr 20 16:51:27 2017<br>
New Revision: 300902<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=300902&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=300902&view=rev</a><br>
Log:<br>
Add an example command to toggle between disassembly-only and source mode.<br>
<br>
Sometimes you are debugging in source, but you really only want to see<br>
the disassembly.  That's easy to do but you have to set a few variables.<br>
This command toggles between your old values, and a disassembly only mode.<br>
<br>
Added:<br>
    lldb/trunk/examples/python/<wbr>disassembly_mode.py<br>
<br>
Added: lldb/trunk/examples/python/<wbr>disassembly_mode.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/examples/python/disassembly_mode.py?rev=300902&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lldb/trunk/examples/<wbr>python/disassembly_mode.py?<wbr>rev=300902&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lldb/trunk/examples/python/<wbr>disassembly_mode.py (added)<br>
+++ lldb/trunk/examples/python/<wbr>disassembly_mode.py Thu Apr 20 16:51:27 2017<br>
@@ -0,0 +1,48 @@<br>
+""" Adds the 'toggle-disassembly' command to switch you into a disassembly only mode """<br>
+import lldb<br>
+<br>
+class DisassemblyMode:<br>
+    def __init__(self, debugger, unused):<br>
+        self.dbg = debugger<br>
+        self.interp = debugger.<wbr>GetCommandInterpreter()<br>
+        self.store_state()<br>
+        self.mode_off = True<br>
+<br>
+    def store_state(self):<br>
+        self.dis_count = self.get_string_value("stop-<wbr>disassembly-count")<br>
+        self.dis_display = self.get_string_value("stop-<wbr>disassembly-display")<br>
+        self.before_count = self.get_string_value("stop-<wbr>line-count-before")<br>
+        self.after_count = self.get_string_value("stop-<wbr>line-count-after")<br>
+<br>
+    def get_string_value(self, setting):<br>
+        result = lldb.SBCommandReturnObject()<br>
+        self.interp.HandleCommand("<wbr>settings show " + setting, result)<br>
+        value = result.GetOutput().split(" = ")[1].rstrip("\n")<br>
+        return value<br>
+<br>
+    def set_value(self, setting, value):<br>
+        result = lldb.SBCommandReturnObject()<br>
+        self.interp.HandleCommand("<wbr>settings set " + setting + " " + value, result)<br>
+<br>
+    def __call__(self, debugger, command, exe_ctx, result):<br>
+        if self.mode_off:<br>
+            self.mode_off = False<br>
+            self.store_state()<br>
+            self.set_value("stop-<wbr>disassembly-display","always")<br>
+            self.set_value("stop-<wbr>disassembly-count", "8")<br>
+            self.set_value("stop-line-<wbr>count-before", "0")<br>
+            self.set_value("stop-line-<wbr>count-after", "0")<br>
+            result.AppendMessage("<wbr>Disassembly mode on.")<br>
+        else:<br>
+            self.mode_off = True<br>
+            self.set_value("stop-<wbr>disassembly-display",self.dis_<wbr>display)<br>
+            self.set_value("stop-<wbr>disassembly-count", self.dis_count)<br>
+            self.set_value("stop-line-<wbr>count-before", self.before_count)<br>
+            self.set_value("stop-line-<wbr>count-after", self.after_count)<br>
+            result.AppendMessage("<wbr>Disassembly mode off.")<br>
+<br>
+    def get_short_help(self):<br>
+        return "Toggles between a disassembly only mode and normal source mode\n"<br>
+<br>
+def __lldb_init_module(debugger, unused):<br>
+    debugger.HandleCommand("<wbr>command script add -c disassembly_mode.<wbr>DisassemblyMode toggle-disassembly")<br>
<br>
<br>
______________________________<wbr>_________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@lists.llvm.org">lldb-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/lldb-commits</a><br>
</blockquote></div><br></div>