[lldb-dev] Patch for review: target modules show-unwind errors

Michael Sartain mikesart at gmail.com
Thu Aug 15 14:10:20 PDT 2013


When using the "target modules show-unwind", it was very difficult to tell
whether I had typed something wrong or it had found zero results.

All of these commands would return nothing:
  target modules show-unwind 0x80484d0 ; invalid command - nothing done
  target modules show-unwind -a 0x80484d0 ; this is a valid command that
  target modules show-unwind -foobar 0x80484d0 ; invalid command - nothing
done
  target modules show-unwind nonexistentfunctionname ; invalid command -
nothing done

The patch below returns an error string if you specify an invalid option,
don't specify an option, or no results were found.

Please let me know if it's ok to submit. Thanks.
 -Mike

mikesart at mikesart-rad:~/data/src/llvm.svn/llvm/tools/lldb$ svn diff
Index: source/Commands/CommandObjectTarget.cpp
===================================================================
--- source/Commands/CommandObjectTarget.cpp     (revision 188467)
+++ source/Commands/CommandObjectTarget.cpp     (working copy)
@@ -3468,6 +3468,7 @@
                 case 'a':
                 {
                     ExecutionContext exe_ctx
(m_interpreter.GetExecutionContext());
+                    m_str = option_arg;
                     m_type = eLookupTypeAddress;
                     m_addr = Args::StringToAddress(&exe_ctx, option_arg,
LLDB_INVALID_ADDRESS, &error);
                     if (m_addr == LLDB_INVALID_ADDRESS)
@@ -3481,6 +3482,10 @@
                     m_type = eLookupTypeFunctionOrSymbol;
                     break;
                 }
+
+                default:
+                    error.SetErrorStringWithFormat ("unrecognized option
%c.", short_option);
+                    break;
             }

             return error;
@@ -3591,8 +3596,21 @@
                 }
             }
         }
+        else
+        {
+            result.AppendError ("address-expression or function name
option must be specified.");
+            result.SetStatus (eReturnStatusFailed);
+            return false;
+        }

         size_t num_matches = sc_list.GetSize();
+        if (num_matches == 0)
+        {
+            result.AppendErrorWithFormat ("no unwind data found that
matches '%s'.", m_options.m_str.c_str());
+            result.SetStatus (eReturnStatusFailed);
+            return false;
+        }
+
         for (uint32_t idx = 0; idx < num_matches; idx++)
         {
             SymbolContext sc;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20130815/7fbe9550/attachment.html>


More information about the lldb-dev mailing list