[Lldb-commits] [lldb] r150514 - in /lldb/trunk: source/Commands/ test/functionalities/completion/ test/functionalities/watchpoint/hello_watchlocation/ test/functionalities/watchpoint/hello_watchpoint/ test/functionalities/watchpoint/multiple_threads/ test/functionalities/watchpoint/watchpoint_commands/ test/functionalities/watchpoint/watchpoint_commands/condition/

Johnny Chen johnny.chen at apple.com
Tue Feb 14 14:00:40 PST 2012


Author: johnny
Date: Tue Feb 14 16:00:40 2012
New Revision: 150514

URL: http://llvm.org/viewvc/llvm-project?rev=150514&view=rev
Log:
Remove the functionality of using 'frame variable -w' to set a watchpoint now that 'watchpoint set variable/expression'
is working.  Also update the relevant test cases.

Modified:
    lldb/trunk/source/Commands/CommandObjectFrame.cpp
    lldb/trunk/test/functionalities/completion/TestCompletion.py
    lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
    lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py
    lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py
    lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py
    lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py

Modified: lldb/trunk/source/Commands/CommandObjectFrame.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectFrame.cpp?rev=150514&r1=150513&r2=150514&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectFrame.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectFrame.cpp Tue Feb 14 16:00:40 2012
@@ -14,7 +14,6 @@
 #include <string>
 // Other libraries and framework includes
 // Project includes
-#include "lldb/Breakpoint/Watchpoint.h"
 #include "lldb/Core/DataVisualization.h"
 #include "lldb/Core/Debugger.h"
 #include "lldb/Core/Module.h"
@@ -32,7 +31,6 @@
 #include "lldb/Interpreter/OptionGroupFormat.h"
 #include "lldb/Interpreter/OptionGroupValueObjectDisplay.h"
 #include "lldb/Interpreter/OptionGroupVariable.h"
-#include "lldb/Interpreter/OptionGroupWatchpoint.h"
 #include "lldb/Symbol/ClangASTType.h"
 #include "lldb/Symbol/ClangASTContext.h"
 #include "lldb/Symbol/ObjectFile.h"
@@ -330,20 +328,12 @@
                        "If any arguments are specified, they can be names of "
                        "argument, local, file static and file global variables. "
                        "Children of aggregate variables can be specified such as "
-                       "'var->child.x'. "
-                       "You can choose to watch a variable with the '-w' option; "
-                       "with the additional '-x' option to specify the region size, "
-                       "the variable's value will be used as the starting address of "
-                       "the region to watch for, instead. "
-                       "Note that hardware resources for watching are often limited. "
-                       "See alo 'watchpoint set' where you can use an expression to "
-                       "specify the address to watch for.",
+                       "'var->child.x'.",
                        NULL,
                        eFlagProcessMustBeLaunched | eFlagProcessMustBePaused),
         m_option_group (interpreter),
         m_option_variable(true), // Include the frame specific options by passing "true"
         m_option_format (eFormatDefault),
-        m_option_watchpoint(),
         m_varobj_options()
     {
         CommandArgumentEntry arg;
@@ -361,7 +351,6 @@
         
         m_option_group.Append (&m_option_variable, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1);
         m_option_group.Append (&m_option_format, OptionGroupFormat::OPTION_GROUP_FORMAT | OptionGroupFormat::OPTION_GROUP_GDB_FMT, LLDB_OPT_SET_1);
-        m_option_group.Append (&m_option_watchpoint, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1);
         m_option_group.Append (&m_varobj_options, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1);
         m_option_group.Finalize();
     }
@@ -432,23 +421,6 @@
         
         if (variable_list)
         {
-            // If watching a variable, there are certain restrictions to be followed.
-            if (m_option_watchpoint.watch_type_specified)
-            {
-                if (command.GetArgumentCount() != 1) {
-                    result.GetErrorStream().Printf("error: specify exactly one variable when using the '-w' option\n");
-                    result.SetStatus(eReturnStatusFailed);
-                    return false;
-                } else if (m_option_variable.use_regex) {
-                    result.GetErrorStream().Printf("error: specify your variable name exactly (no regex) when using the '-w' option\n");
-                    result.SetStatus(eReturnStatusFailed);
-                    return false;
-                }
-
-                // Things have checked out ok...
-                // m_option_watchpoint.watch_type specifies the type of watching.
-            }
-            
             const Format format = m_option_format.GetFormat();
 
             if (command.GetArgumentCount() > 0)
@@ -543,49 +515,6 @@
                                                           valobj_sp->GetParent() ? name_cstr : NULL,
                                                           options,
                                                           format);
-                            // Process watchpoint if necessary.
-                            if (m_option_watchpoint.watch_type_specified)
-                            {
-                                AddressType addr_type;
-                                lldb::addr_t addr = 0;
-                                size_t size = 0;
-                                if (m_option_watchpoint.watch_size == 0) {
-                                    addr = valobj_sp->GetAddressOf(false, &addr_type);
-                                    if (addr_type == eAddressTypeLoad) {
-                                        // We're in business.
-                                        // Find out the size of this variable.
-                                        size = valobj_sp->GetByteSize();
-                                    }
-                                } else {
-                                    // The '-xsize'/'-x' option means to treat the value object as
-                                    // a pointer and to watch the pointee with the specified size.
-                                    addr = valobj_sp->GetValueAsUnsigned(0);
-                                    size = m_option_watchpoint.watch_size;
-                                }
-                                uint32_t watch_type = m_option_watchpoint.watch_type;
-                                Watchpoint *wp = exe_ctx.GetTargetRef().CreateWatchpoint(addr, size, watch_type).get();
-                                if (wp)
-                                {
-                                    if (var_sp && var_sp->GetDeclaration().GetFile())
-                                    {
-                                        StreamString ss;
-                                        // True to show fullpath for declaration file.
-                                        var_sp->GetDeclaration().DumpStopContext(&ss, true);
-                                        wp->SetDeclInfo(ss.GetString());
-                                    }
-                                    StreamString ss;
-                                    output_stream.Printf("Watchpoint created: ");
-                                    wp->GetDescription(&output_stream, lldb::eDescriptionLevelFull);
-                                    output_stream.EOL();
-                                    result.SetStatus(eReturnStatusSuccessFinishResult);
-                                }
-                                else
-                                {
-                                    result.AppendErrorWithFormat("Watchpoint creation failed.\n");
-                                    result.SetStatus(eReturnStatusFailed);
-                                }
-                                return (wp != NULL);
-                            }
                         }
                         else
                         {
@@ -688,7 +617,6 @@
     OptionGroupOptions m_option_group;
     OptionGroupVariable m_option_variable;
     OptionGroupFormat m_option_format;
-    OptionGroupWatchpoint m_option_watchpoint;
     OptionGroupValueObjectDisplay m_varobj_options;
 };
 

Modified: lldb/trunk/test/functionalities/completion/TestCompletion.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/completion/TestCompletion.py?rev=150514&r1=150513&r2=150514&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/completion/TestCompletion.py (original)
+++ lldb/trunk/test/functionalities/completion/TestCompletion.py Tue Feb 14 16:00:40 2012
@@ -18,13 +18,13 @@
         system(["/bin/sh", "-c", "rm -f child_send.txt"])
         system(["/bin/sh", "-c", "rm -f child_read.txt"])
 
-    def test_frame_variable_dash_w(self):
-        """Test that 'frame variable -w' completes to 'frame variable -w '."""
-        self.complete_from_to('frame variable -w', 'frame variable -w ')
-
-    def test_frame_variable_dash_w_space(self):
-        """Test that 'frame variable -w ' completes to ['Available completions:', 'read', 'write', 'read_write']."""
-        self.complete_from_to('frame variable -w ', ['Available completions:', 'read', 'write', 'read_write'])
+    def test_watchpoint_set_variable_dash_w(self):
+        """Test that 'watchpoint set variable -w' completes to 'watchpoint set variable -w '."""
+        self.complete_from_to('watchpoint set variable -w', 'watchpoint set variable -w ')
+
+    def test_watchpoint_set_variable_dash_w_space(self):
+        """Test that 'watchpoint set variable -w ' completes to ['Available completions:', 'read', 'write', 'read_write']."""
+        self.complete_from_to('watchpoint set variable -w ', ['Available completions:', 'read', 'write', 'read_write'])
 
     def test_watchpoint_set_ex(self):
         """Test that 'watchpoint set ex' completes to 'watchpoint set expression '."""

Modified: lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py?rev=150514&r1=150513&r2=150514&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py (original)
+++ lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py Tue Feb 14 16:00:40 2012
@@ -60,7 +60,7 @@
         # The main.cpp, by design, misbehaves by not following the agreed upon
         # protocol of using a mutex while accessing the global pool and by not
         # incrmenting the global pool by 2.
-        self.expect("frame variable -w write -x 1 -g g_char_ptr", WATCHPOINT_CREATED,
+        self.expect("watchpoint set expression -w write -x 1 -- g_char_ptr", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 1', 'type = w'])
         self.runCmd("expr unsigned val = *g_char_ptr; val")
         self.expect(self.res.GetOutput().splitlines()[0], exe=False,

Modified: lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py?rev=150514&r1=150513&r2=150514&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py (original)
+++ lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py Tue Feb 14 16:00:40 2012
@@ -11,30 +11,17 @@
 
     mydir = os.path.join("functionalities", "watchpoint", "hello_watchpoint")
 
-    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
-    def test_hello_watchpoint_with_dsym_using_frame_var(self):
-        """Test a simple sequence of watchpoint creation and watchpoint hit."""
-        self.buildDsym(dictionary=self.d)
-        self.setTearDownCleanup(dictionary=self.d)
-        self.hello_watchpoint()
-
-    def test_hello_watchpoint_with_dwarf_using_frame_var(self):
-        """Test a simple sequence of watchpoint creation and watchpoint hit."""
-        self.buildDwarf(dictionary=self.d)
-        self.setTearDownCleanup(dictionary=self.d)
-        self.hello_watchpoint()
-
     def test_hello_watchpoint_with_dsym_using_watchpoint_set(self):
         """Test a simple sequence of watchpoint creation and watchpoint hit."""
         self.buildDsym(dictionary=self.d)
         self.setTearDownCleanup(dictionary=self.d)
-        self.hello_watchpoint(use_frame_var=False)
+        self.hello_watchpoint()
 
     def test_hello_watchpoint_with_dwarf_using_watchpoint_set(self):
         """Test a simple sequence of watchpoint creation and watchpoint hit."""
         self.buildDwarf(dictionary=self.d)
         self.setTearDownCleanup(dictionary=self.d)
-        self.hello_watchpoint(use_frame_var=False)
+        self.hello_watchpoint()
 
     def setUp(self):
         # Call super's setUp().
@@ -49,7 +36,7 @@
         self.exe_name = self.testMethodName
         self.d = {'C_SOURCES': self.source, 'EXE': self.exe_name}
 
-    def hello_watchpoint(self, use_frame_var=True):
+    def hello_watchpoint(self):
         """Test a simple sequence of watchpoint creation and watchpoint hit."""
         exe = os.path.join(os.getcwd(), self.exe_name)
         self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
@@ -70,14 +57,9 @@
 
         # Now let's set a write-type watchpoint for 'global'.
         # There should be only one watchpoint hit (see main.c).
-        if use_frame_var:
-            self.expect("frame variable -w write -g -L global", WATCHPOINT_CREATED,
-                substrs = ['Watchpoint created', 'size = 4', 'type = w',
-                           '%s:%d' % (self.source, self.decl)])
-        else:
-            self.expect("watchpoint set variable -w write global", WATCHPOINT_CREATED,
-                substrs = ['Watchpoint created', 'size = 4', 'type = w',
-                           '%s:%d' % (self.source, self.decl)])
+        self.expect("watchpoint set variable -w write global", WATCHPOINT_CREATED,
+            substrs = ['Watchpoint created', 'size = 4', 'type = w',
+                       '%s:%d' % (self.source, self.decl)])
 
         # Use the '-v' option to do verbose listing of the watchpoint.
         # The hit count should be 0 initially.

Modified: lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py?rev=150514&r1=150513&r2=150514&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py (original)
+++ lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py Tue Feb 14 16:00:40 2012
@@ -64,7 +64,7 @@
         # The main.cpp, by design, misbehaves by not following the agreed upon
         # protocol of using a mutex while accessing the global pool and by not
         # writing to the variable.
-        self.expect("frame variable -w write -g g_val", WATCHPOINT_CREATED,
+        self.expect("watchpoint set variable -w write g_val", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 4', 'type = w'])
 
         # Use the '-v' option to do verbose listing of the watchpoint.

Modified: lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py?rev=150514&r1=150513&r2=150514&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py (original)
+++ lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py Tue Feb 14 16:00:40 2012
@@ -111,7 +111,7 @@
 
         # Now let's set a read_write-type watchpoint for 'global'.
         # There should be two watchpoint hits (see main.c).
-        self.expect("frame variable -w read_write -g -L global", WATCHPOINT_CREATED,
+        self.expect("watchpoint set variable -w read_write global", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 4', 'type = rw',
                        '%s:%d' % (self.source, self.decl)])
 
@@ -167,7 +167,7 @@
 
         # Now let's set a read_write-type watchpoint for 'global'.
         # There should be two watchpoint hits (see main.c).
-        self.expect("frame variable -w read_write -g -L global", WATCHPOINT_CREATED,
+        self.expect("watchpoint set variable -w read_write global", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 4', 'type = rw',
                        '%s:%d' % (self.source, self.decl)])
 
@@ -209,7 +209,7 @@
 
         # Now let's set a read_write-type watchpoint for 'global'.
         # There should be two watchpoint hits (see main.c).
-        self.expect("frame variable -w read_write -g -L global", WATCHPOINT_CREATED,
+        self.expect("watchpoint set variable -w read_write global", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 4', 'type = rw',
                        '%s:%d' % (self.source, self.decl)])
 
@@ -255,7 +255,7 @@
 
         # Now let's set a read_write-type watchpoint for 'global'.
         # There should be two watchpoint hits (see main.c).
-        self.expect("frame variable -w read_write -g -L global", WATCHPOINT_CREATED,
+        self.expect("watchpoint set variable -w read_write global", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 4', 'type = rw',
                        '%s:%d' % (self.source, self.decl)])
 
@@ -314,7 +314,7 @@
 
         # Now let's set a read_write-type watchpoint for 'global'.
         # There should be two watchpoint hits (see main.c).
-        self.expect("frame variable -w read_write -g -L global", WATCHPOINT_CREATED,
+        self.expect("watchpoint set variable -w read_write global", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 4', 'type = rw',
                        '%s:%d' % (self.source, self.decl)])
 

Modified: lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py?rev=150514&r1=150513&r2=150514&view=diff
==============================================================================
--- lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py (original)
+++ lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py Tue Feb 14 16:00:40 2012
@@ -58,7 +58,7 @@
 
         # Now let's set a write-type watchpoint for 'global'.
         # With a condition of 'global==5'.
-        self.expect("frame variable -w write -g -L global", WATCHPOINT_CREATED,
+        self.expect("watchpoint set variable -w write global", WATCHPOINT_CREATED,
             substrs = ['Watchpoint created', 'size = 4', 'type = w',
                        '%s:%d' % (self.source, self.decl)])
 





More information about the lldb-commits mailing list