aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectFrame.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-03-19 01:12:21 +0000
committerGreg Clayton <gclayton@apple.com>2011-03-19 01:12:21 +0000
commitded470d31aa3a3b1c6b06fc8ae191d210ae089d5 (patch)
tree57af3b30c78261da0625d9ed4def8ccb212dc078 /lldb/source/Commands/CommandObjectFrame.cpp
parent5366ff18659c58ac54ab55db5c6f3cf5d0e01034 (diff)
downloadllvm-ded470d31aa3a3b1c6b06fc8ae191d210ae089d5.zip
llvm-ded470d31aa3a3b1c6b06fc8ae191d210ae089d5.tar.gz
llvm-ded470d31aa3a3b1c6b06fc8ae191d210ae089d5.tar.bz2
Added more platform support. There are now some new commands:
platform status -- gets status information for the selected platform platform create <platform-name> -- creates a new instance of a remote platform platform list -- list all available platforms platform select -- select a platform instance as the current platform (not working yet) When using "platform create" it will create a remote platform and make it the selected platform. For instances for iPhone OS debugging on Mac OS X one can do: (lldb) platform create remote-ios --sdk-version=4.0 Remote platform: iOS platform SDK version: 4.0 SDK path: "/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0" Not connected to a remote device. (lldb) file ~/Documents/a.out Current executable set to '~/Documents/a.out' (armv6). (lldb) image list [ 0] /Volumes/work/gclayton/Documents/devb/attach/a.out [ 1] /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0/Symbols/usr/lib/dyld [ 2] /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0/Symbols/usr/lib/libSystem.B.dylib Note that this is all happening prior to running _or_ connecting to a remote platform. Once connected to a remote platform the OS version might change which means we will need to update our dependecies. Also once we run, we will need to match up the actualy binaries with the actualy UUID's to files in the SDK, or download and cache them locally. This is just the start of the remote platforms, but this modification is the first iteration in getting the platforms really doing something. llvm-svn: 127934
Diffstat (limited to 'lldb/source/Commands/CommandObjectFrame.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectFrame.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/lldb/source/Commands/CommandObjectFrame.cpp b/lldb/source/Commands/CommandObjectFrame.cpp
index 1616ecc..0bc30f4 100644
--- a/lldb/source/Commands/CommandObjectFrame.cpp
+++ b/lldb/source/Commands/CommandObjectFrame.cpp
@@ -319,7 +319,8 @@ public:
case 'L': show_location= true; break;
case 'c': show_decl = true; break;
case 'D': debug = true; break;
- case 'f': flat_output = true; break;
+ case 'f': error = Args::StringToFormat(option_arg, format); break;
+ case 'F': flat_output = true; break;
case 'd':
max_depth = Args::StringToUInt32 (option_arg, UINT32_MAX, 0, &success);
if (!success)
@@ -367,6 +368,7 @@ public:
flat_output = false;
max_depth = UINT32_MAX;
ptr_depth = 0;
+ format = eFormatDefault;
globals.clear();
}
@@ -393,6 +395,7 @@ public:
flat_output:1;
uint32_t max_depth; // The depth to print when dumping concrete (not pointers) aggreate values
uint32_t ptr_depth; // The default depth that is dumped when we find pointers
+ lldb::Format format; // The format to use when dumping variables or children of variables
std::vector<ConstString> globals;
// Instance variables to hold the values for command options.
};
@@ -491,6 +494,9 @@ public:
if (valobj_sp)
{
+ if (m_options.format != eFormatDefault)
+ valobj_sp->SetFormat (m_options.format);
+
if (m_options.show_decl && var_sp->GetDeclaration ().GetFile())
{
var_sp->GetDeclaration ().DumpStopContext (&s, false);
@@ -550,6 +556,9 @@ public:
valobj_sp = exe_ctx.frame->GetValueObjectForFrameVariable (var_sp);
if (valobj_sp)
{
+ if (m_options.format != eFormatDefault)
+ valobj_sp->SetFormat (m_options.format);
+
if (m_options.show_decl && var_sp->GetDeclaration ().GetFile())
{
var_sp->GetDeclaration ().DumpStopContext (&s, false);
@@ -593,6 +602,9 @@ public:
valobj_sp = exe_ctx.frame->GetValueForVariableExpressionPath (name_cstr, expr_path_options, error);
if (valobj_sp)
{
+ if (m_options.format != eFormatDefault)
+ valobj_sp->SetFormat (m_options.format);
+
if (m_options.show_decl && var_sp->GetDeclaration ().GetFile())
{
var_sp->GetDeclaration ().DumpStopContext (&s, false);
@@ -672,6 +684,9 @@ public:
valobj_sp = exe_ctx.frame->GetValueObjectForFrameVariable (var_sp);
if (valobj_sp)
{
+ if (m_options.format != eFormatDefault)
+ valobj_sp->SetFormat (m_options.format);
+
// When dumping all variables, don't print any variables
// that are not in scope to avoid extra unneeded output
if (valobj_sp->IsInScope (exe_ctx.frame))
@@ -726,7 +741,8 @@ CommandObjectFrameVariable::CommandOptions::g_option_table[] =
{ LLDB_OPT_SET_1, false, "objc", 'o', no_argument, NULL, 0, eArgTypeNone, "When looking up a variable by name, print as an Objective-C object."},
{ LLDB_OPT_SET_1, false, "ptr-depth", 'p', required_argument, NULL, 0, eArgTypeCount, "The number of pointers to be traversed when dumping values (default is zero)."},
{ LLDB_OPT_SET_1, false, "regex", 'r', no_argument, NULL, 0, eArgTypeRegularExpression, "The <variable-name> argument for name lookups are regular expressions."},
-{ LLDB_OPT_SET_1, false, "flat", 'f', no_argument, NULL, 0, eArgTypeNone, "Display results in a flat format that uses expression paths for each variable or member."},
+{ LLDB_OPT_SET_1, false, "flat", 'F', no_argument, NULL, 0, eArgTypeNone, "Display results in a flat format that uses expression paths for each variable or member."},
+{ LLDB_OPT_SET_1, false, "format", 'f', required_argument, NULL, 0, eArgTypeExprFormat, "Specify the format that the variable output should use."},
{ 0, false, NULL, 0, 0, NULL, NULL, eArgTypeNone, NULL }
};
#pragma mark CommandObjectMultiwordFrame