Fixed a bug where deleting a regex summary would not immediately reflect in the variables display
The "systemwide summaries" feature has been removed and replaced with a more general and
powerful mechanism.
Categories:
- summaries can now be grouped into buckets, called "categories" (it is expected that categories
correspond to libraries and/or runtime environments)
- to add a summary to a category, you can use the -w option to type summary add and give
a category name (e.g. type summary add -f "foo" foo_t -w foo_category)
- categories are by default disabled, which means LLDB will not look into them for summaries,
to enable a category use "type category enable". once a category is enabled, LLDB will
look into that category for summaries. the rules are quite trivial: every enabled category
is searched for an exact match. if an exact match is nowhere to be found, any match is
searched for in every enabled category (whether it involves cascading, going to base classes,
...). categories are searched into the order in which they were enabled (the most recently
enabled category first, then the second most and so on..)
- by default, most commands that deal with summaries, use a category named "default" if no
explicit -w parameter is given (the observable behavior of LLDB should not change when
categories are not explicitly used)
- the systemwide summaries are now part of a "system" category
llvm-svn: 135463
2011-07-19 10:34:21 +08:00
|
|
|
"""
|
|
|
|
Test lldb data formatter subsystem.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import os, time
|
|
|
|
import unittest2
|
|
|
|
import lldb
|
|
|
|
from lldbtest import *
|
|
|
|
|
|
|
|
class DataFormatterTestCase(TestBase):
|
|
|
|
|
|
|
|
mydir = os.path.join("functionalities", "data-formatter", "data-formatter-globals")
|
|
|
|
|
|
|
|
@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
|
|
|
|
def test_with_dsym_and_run_command(self):
|
|
|
|
"""Test data formatter commands."""
|
|
|
|
self.buildDsym()
|
|
|
|
self.data_formatter_commands()
|
|
|
|
|
|
|
|
def test_with_dwarf_and_run_command(self):
|
|
|
|
"""Test data formatter commands."""
|
|
|
|
self.buildDwarf()
|
|
|
|
self.data_formatter_commands()
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
# Call super's setUp().
|
|
|
|
TestBase.setUp(self)
|
|
|
|
# Find the line number to break at.
|
|
|
|
self.line = line_number('main.cpp', '// Set break point at this line.')
|
|
|
|
|
|
|
|
def data_formatter_commands(self):
|
|
|
|
"""Test that that file and class static variables display correctly."""
|
|
|
|
self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
|
|
|
|
|
|
|
|
self.expect("breakpoint set -f main.cpp -l %d" % self.line,
|
|
|
|
BREAKPOINT_CREATED,
|
|
|
|
startstr = "Breakpoint created: 1: file ='main.cpp', line = %d, locations = 1" %
|
|
|
|
self.line)
|
|
|
|
|
|
|
|
# This is the function to remove the custom formats in order to have a
|
|
|
|
# clean slate for the next test case.
|
|
|
|
def cleanup():
|
|
|
|
self.runCmd('type format clear', check=False)
|
|
|
|
self.runCmd('type summary clear', check=False)
|
|
|
|
|
|
|
|
# Execute the cleanup function during test case tear down.
|
|
|
|
self.addTearDownHook(cleanup)
|
|
|
|
|
2011-08-24 00:13:35 +08:00
|
|
|
self.runCmd("type summary add --summary-string \"JustATest\" Point")
|
Fixed a bug where deleting a regex summary would not immediately reflect in the variables display
The "systemwide summaries" feature has been removed and replaced with a more general and
powerful mechanism.
Categories:
- summaries can now be grouped into buckets, called "categories" (it is expected that categories
correspond to libraries and/or runtime environments)
- to add a summary to a category, you can use the -w option to type summary add and give
a category name (e.g. type summary add -f "foo" foo_t -w foo_category)
- categories are by default disabled, which means LLDB will not look into them for summaries,
to enable a category use "type category enable". once a category is enabled, LLDB will
look into that category for summaries. the rules are quite trivial: every enabled category
is searched for an exact match. if an exact match is nowhere to be found, any match is
searched for in every enabled category (whether it involves cascading, going to base classes,
...). categories are searched into the order in which they were enabled (the most recently
enabled category first, then the second most and so on..)
- by default, most commands that deal with summaries, use a category named "default" if no
explicit -w parameter is given (the observable behavior of LLDB should not change when
categories are not explicitly used)
- the systemwide summaries are now part of a "system" category
llvm-svn: 135463
2011-07-19 10:34:21 +08:00
|
|
|
|
|
|
|
# Simply check we can get at global variables
|
|
|
|
self.expect("target variable g_point",
|
|
|
|
substrs = ['JustATest'])
|
|
|
|
|
|
|
|
self.expect("target variable g_point_pointer",
|
|
|
|
substrs = ['(Point *) g_point_pointer ='])
|
|
|
|
|
|
|
|
# Print some information about the variables
|
|
|
|
# (we ignore the actual values)
|
2011-08-24 00:13:35 +08:00
|
|
|
self.runCmd("type summary add --summary-string \"(x=${var.x},y=${var.y})\" Point")
|
Fixed a bug where deleting a regex summary would not immediately reflect in the variables display
The "systemwide summaries" feature has been removed and replaced with a more general and
powerful mechanism.
Categories:
- summaries can now be grouped into buckets, called "categories" (it is expected that categories
correspond to libraries and/or runtime environments)
- to add a summary to a category, you can use the -w option to type summary add and give
a category name (e.g. type summary add -f "foo" foo_t -w foo_category)
- categories are by default disabled, which means LLDB will not look into them for summaries,
to enable a category use "type category enable". once a category is enabled, LLDB will
look into that category for summaries. the rules are quite trivial: every enabled category
is searched for an exact match. if an exact match is nowhere to be found, any match is
searched for in every enabled category (whether it involves cascading, going to base classes,
...). categories are searched into the order in which they were enabled (the most recently
enabled category first, then the second most and so on..)
- by default, most commands that deal with summaries, use a category named "default" if no
explicit -w parameter is given (the observable behavior of LLDB should not change when
categories are not explicitly used)
- the systemwide summaries are now part of a "system" category
llvm-svn: 135463
2011-07-19 10:34:21 +08:00
|
|
|
|
|
|
|
self.expect("target variable g_point",
|
|
|
|
substrs = ['x=',
|
|
|
|
'y='])
|
|
|
|
|
|
|
|
self.expect("target variable g_point_pointer",
|
|
|
|
substrs = ['(Point *) g_point_pointer ='])
|
|
|
|
|
|
|
|
# Test Python code on resulting SBValue
|
2011-08-23 08:32:52 +08:00
|
|
|
self.runCmd("type summary add --python-script \"return 'x=' + str(valobj.GetChildMemberWithName('x').GetValue());\" Point")
|
Fixed a bug where deleting a regex summary would not immediately reflect in the variables display
The "systemwide summaries" feature has been removed and replaced with a more general and
powerful mechanism.
Categories:
- summaries can now be grouped into buckets, called "categories" (it is expected that categories
correspond to libraries and/or runtime environments)
- to add a summary to a category, you can use the -w option to type summary add and give
a category name (e.g. type summary add -f "foo" foo_t -w foo_category)
- categories are by default disabled, which means LLDB will not look into them for summaries,
to enable a category use "type category enable". once a category is enabled, LLDB will
look into that category for summaries. the rules are quite trivial: every enabled category
is searched for an exact match. if an exact match is nowhere to be found, any match is
searched for in every enabled category (whether it involves cascading, going to base classes,
...). categories are searched into the order in which they were enabled (the most recently
enabled category first, then the second most and so on..)
- by default, most commands that deal with summaries, use a category named "default" if no
explicit -w parameter is given (the observable behavior of LLDB should not change when
categories are not explicitly used)
- the systemwide summaries are now part of a "system" category
llvm-svn: 135463
2011-07-19 10:34:21 +08:00
|
|
|
|
|
|
|
self.expect("target variable g_point",
|
|
|
|
substrs = ['x='])
|
|
|
|
|
|
|
|
self.expect("target variable g_point_pointer",
|
|
|
|
substrs = ['(Point *) g_point_pointer ='])
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import atexit
|
|
|
|
lldb.SBDebugger.Initialize()
|
|
|
|
atexit.register(lambda: lldb.SBDebugger.Terminate())
|
|
|
|
unittest2.main()
|