summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2018-10-10 00:51:30 +0000
committerJim Ingham <jingham@apple.com>2018-10-10 00:51:30 +0000
commit285ae0c07b20b25725963e11f65fbb53b5110edc (patch)
treed452e5108b8a8a7f995b0d0b727b4bb33a056edc
parentabbc51e5c34df90872c510b3221e817e714fccda (diff)
downloadbcm5719-llvm-285ae0c07b20b25725963e11f65fbb53b5110edc.tar.gz
bcm5719-llvm-285ae0c07b20b25725963e11f65fbb53b5110edc.zip
Add "var" and "vo" aliases for "frame variable" and "frame variable -O".
Differential Revision: https://reviews.llvm.org/D53010 llvm-svn: 344102
-rw-r--r--lldb/source/Commands/CommandObjectFrame.cpp12
-rw-r--r--lldb/source/Interpreter/CommandInterpreter.cpp7
2 files changed, 18 insertions, 1 deletions
diff --git a/lldb/source/Commands/CommandObjectFrame.cpp b/lldb/source/Commands/CommandObjectFrame.cpp
index 14f41466b85..5424bcdf103 100644
--- a/lldb/source/Commands/CommandObjectFrame.cpp
+++ b/lldb/source/Commands/CommandObjectFrame.cpp
@@ -427,7 +427,17 @@ public:
"arguments and local variables in scope. Names of argument, "
"local, file static and file global variables can be specified. "
"Children of aggregate variables can be specified such as "
- "'var->child.x'.",
+ "'var->child.x'. The -> and [] operators in 'frame variable' do "
+ "not invoke operator overloads if they exist, but directly access "
+ "the specified element. If you want to trigger operator overloads "
+ "use the expression command to print the variable instead."
+ "\nIt is worth noting that except for overloaded "
+ "operators, when printing local variables 'expr local_var' and "
+ "'frame var local_var' produce the same "
+ "results. However, 'frame variable' is more efficient, since it "
+ "uses debug information and memory reads directly, rather than "
+ "parsing and evaluating an expression, which may even involve "
+ "JITing and running code in the target program.",
nullptr, eCommandRequiresFrame | eCommandTryTargetAPILock |
eCommandProcessMustBeLaunched |
eCommandProcessMustBePaused | eCommandRequiresProcess),
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp
index ec812d61ea2..d5dd32b52b8 100644
--- a/lldb/source/Interpreter/CommandInterpreter.cpp
+++ b/lldb/source/Interpreter/CommandInterpreter.cpp
@@ -423,6 +423,13 @@ void CommandInterpreter::Initialize() {
if (cmd_obj_sp) {
AddAlias("rbreak", cmd_obj_sp, "--func-regex %1");
}
+
+ cmd_obj_sp = GetCommandSPExact("frame variable", false);
+ if (cmd_obj_sp) {
+ AddAlias("var", cmd_obj_sp);
+ AddAlias("vo", cmd_obj_sp, "--object-description");
+ }
+
}
void CommandInterpreter::Clear() {
OpenPOWER on IntegriCloud