| #
22c55d18 |
| 12-Aug-2011 |
Enrico Granata <[email protected]> |
*Some more optimizations in usage of ConstString *New setting target.max-children-count gives an upper-bound to the number of child objects that will be displayed at each depth-level This might be
*Some more optimizations in usage of ConstString *New setting target.max-children-count gives an upper-bound to the number of child objects that will be displayed at each depth-level This might be a breaking change in some scenarios. To override the new limit you can use the --show-all-children (-A) option to frame variable or increase the limit in your lldbinit file *Command "type synthetic" has been split in two: - "type synthetic" now only handles Python synthetic children providers - the new command "type filter" handles filters Because filters and synthetic providers are both ways to replace the children of a ValueObject, only one can be effective at any given time.
llvm-svn: 137416
show more ...
|
| #
aa149cbd |
| 11-Aug-2011 |
Greg Clayton <[email protected]> |
Added the ability to remove orphaned module shared pointers from a ModuleList. This is helping us track down some extra references to ModuleSP objects that are causing things to get kept around for t
Added the ability to remove orphaned module shared pointers from a ModuleList. This is helping us track down some extra references to ModuleSP objects that are causing things to get kept around for too long.
Added a module pointer accessor to target and change a lot of code to use it where it would be more efficient.
"taret delete" can now specify "--clean=1" which will cleanup the global module list for any orphaned module in the shared module cache which can save memory and also help track down module reference leaks like we have now.
llvm-svn: 137294
show more ...
|
| #
3418c857 |
| 10-Aug-2011 |
Greg Clayton <[email protected]> |
While tracking down memory consumption issue a few things were needed: the ability to dump more information about modules in "target modules list". We can now dump the shared pointer reference count
While tracking down memory consumption issue a few things were needed: the ability to dump more information about modules in "target modules list". We can now dump the shared pointer reference count for modules, the pointer to the module itself (in case performance tools can help track down who has references to said pointer), and the modification time.
Added "target delete [target-idx ...]" to be able to delete targets when they are no longer needed. This will help track down memory usage issues and help to resolve when module ref counts keep getting incremented. If the command gets no arguments, the currently selected target will be deleted. If any arguments are given, they must all be valid target indexes (use the "target list" command to get the current target indexes).
Took care of a bunch of "no newline at end of file" warnings.
TimeValue objects can now dump their time to a lldb_private::Stream object.
Modified the "target modules list --global" command to not error out if there are no targets since it doesn't require a target.
Fixed an issue in the MacOSX DYLD dynamic loader plug-in where if a shared library was updated on disk, we would keep using the older one, even if it was updated.
Don't allow the ModuleList::GetSharedModule(...) to return an empty module. Previously we could specify a valid path on disc to a module, and specify an architecture that wasn't contained in that module and get a shared pointer to a module that wouldn't be able to return an object file or a symbol file. We now make sure an object file can be extracted prior to adding the shared pointer to the module to get added to the shared list.
llvm-svn: 137196
show more ...
|
| #
ce68b02c |
| 09-Aug-2011 |
Enrico Granata <[email protected]> |
CFString.py now shows contents in a more NSString-like way (e.g. you get @"Hello" instead of "Hello") new --raw-output (-R) option to frame variable prevents using summaries and synthetic children o
CFString.py now shows contents in a more NSString-like way (e.g. you get @"Hello" instead of "Hello") new --raw-output (-R) option to frame variable prevents using summaries and synthetic children other future formatting enhancements will be excluded by using the -R option test case enhanced to check that -R works correctly
llvm-svn: 137185
show more ...
|
| #
65a03991 |
| 09-Aug-2011 |
Greg Clayton <[email protected]> |
Added a "--global" option to the "target modules list" command that allows us to see all modules that exist and their corresponding global shared pointer count. This will help us track down memory is
Added a "--global" option to the "target modules list" command that allows us to see all modules that exist and their corresponding global shared pointer count. This will help us track down memory issues when modules aren't being removed and cleaned up from the module list.
llvm-svn: 137078
show more ...
|
| #
2f7af6a1 |
| 02-Aug-2011 |
Jason Molenda <[email protected]> |
Change CommandObjectTargetModulesAdd to set the return status object on successful adding of a module.
llvm-svn: 136744
|
| #
6f3533fb |
| 29-Jul-2011 |
Enrico Granata <[email protected]> |
Public API changes: - Completely new implementation of SBType - Various enhancements in several other classes Python synthetic children providers for std::vector<T>, std::list<T> and std::map<K,V>:
Public API changes: - Completely new implementation of SBType - Various enhancements in several other classes Python synthetic children providers for std::vector<T>, std::list<T> and std::map<K,V>: - these return the actual elements into the container as the children of the container - basic template name parsing that works (hopefully) on both Clang and GCC - find them in examples/synthetic and in the test suite in functionalities/data-formatter/data-formatter-python-synth New summary string token ${svar : - the syntax is just the same as in ${var but this new token lets you read the values coming from the synthetic children provider instead of the actual children - Python providers above provide a synthetic child len that returns the number of elements into the container Full bug fix for the issue in which getting byte size for a non-complete type would crash LLDB Several other fixes, including: - inverted the order of arguments in the ClangASTType constructor - EvaluationPoint now only returns SharedPointer's to Target and Process - the help text for several type subcommands now correctly indicates argument-less options as such
llvm-svn: 136504
show more ...
|
| #
d55546b2 |
| 22-Jul-2011 |
Enrico Granata <[email protected]> |
when typing a summary string you can use the %S symbol to explicitly indicate that you want the summary to be used to print the target object (e.g. ${var%S}). this might already be the default if yo
when typing a summary string you can use the %S symbol to explicitly indicate that you want the summary to be used to print the target object (e.g. ${var%S}). this might already be the default if your variable is of an aggregate type new feature: synthetic filters. you can restrict the number of children for your variables to only a meaningful subset - the restricted list of children obeys the typical rules (e.g. summaries prevail over children) - one-line summaries show only the filtered (synthetic) children, if you type an expanded summary string, or you use Python scripts, all the real children are accessible - to provide a synthetic children list use the "type synth add" command, as in: type synth add foo_type --child varA --child varB[0] --child varC->packet->flags[1-4] (you can use ., ->, single-item array operator [N] and bitfield operator [N-M]; array slice access is not supported, giving simplified names to expression paths is not supported) - a new -S option to frame variable and target variable lets you override synthetic children and instead show real ones
llvm-svn: 135731
show more ...
|
| #
0c5ef693 |
| 16-Jul-2011 |
Enrico Granata <[email protected]> |
Some descriptive text for the Python script feature: - help type summary add now gives some hints on how to use it frame variable and target variable now have a --no-summary-depth (-Y) option: - si
Some descriptive text for the Python script feature: - help type summary add now gives some hints on how to use it frame variable and target variable now have a --no-summary-depth (-Y) option: - simply using -Y without an argument will skip one level of summaries, i.e. your aggregate types will expand their children and display no summary, even if they have one. children will behave normally - using -Y<int>, as in -Y4, -Y7, ..., will skip as many levels of summaries as given by the <int> parameter (obviously, -Y and -Y1 are the same thing). children beneath the given depth level will behave normally -Y0 is the same as omitting the --no-summary-depth parameter entirely This option replaces the defined-but-unimplemented --no-summary
llvm-svn: 135336
show more ...
|
| #
ef1c6845 |
| 12-Jul-2011 |
Johnny Chen <[email protected]> |
Fix short description of 'target variable' command.
llvm-svn: 135005
|
| #
45ba8543 |
| 10-Jul-2011 |
Greg Clayton <[email protected]> |
Allow the built in ValueObject summary providers for C strings use lldb_private::Target::ReadMemory(...) to allow constant strings to be displayed in global variables prior on in between process exec
Allow the built in ValueObject summary providers for C strings use lldb_private::Target::ReadMemory(...) to allow constant strings to be displayed in global variables prior on in between process execution.
Centralized the variable declaration dumping into:
bool Variable::DumpDeclaration (Stream *s, bool show_fullpaths, bool show_module);
Fixed an issue if you used "target variable --regex <regex>" where the variable name would not be displayed, but the regular expression would.
Fixed an issue when viewing global variables through "target variable" might not display correctly when doing DWARF in object files.
llvm-svn: 134878
show more ...
|
| #
daf515fc |
| 09-Jul-2011 |
Greg Clayton <[email protected]> |
Fixed the global and static variables to always be in scope.
Made it so that you can create synthetic children of array value objects. This is for creating array members when the array index is out
Fixed the global and static variables to always be in scope.
Made it so that you can create synthetic children of array value objects. This is for creating array members when the array index is out of range. This comes in handy when you have a structure definition like:
struct Collection { uint32_t count; Item array[0]; }; "array" has 1 item, but many times in practice there are more items in "item_array".
This allows you to do:
(lldb) target variable g_collection.array[3]
To implement this, the get child at index has been modified to have a "ignore_array_bounds" boolean that can be set to true.
llvm-svn: 134846
show more ...
|
| #
884fb694 |
| 08-Jul-2011 |
Greg Clayton <[email protected]> |
Added the ability to see global variables with a variable expression path so you can do things like:
(lldb) target variable g_global.a (lldb) target variable *g_global.ptr (lldb) target variable g_g
Added the ability to see global variables with a variable expression path so you can do things like:
(lldb) target variable g_global.a (lldb) target variable *g_global.ptr (lldb) target variable g_global.ptr[1]
llvm-svn: 134745
show more ...
|
| #
1d4313b2 |
| 07-Jul-2011 |
Greg Clayton <[email protected]> |
Stop the lldb_private::RegularExpression class from implicitly constructing itself and causing unexpected things to happen in LLDB.
llvm-svn: 134598
|
| #
715c2365 |
| 07-Jul-2011 |
Greg Clayton <[email protected]> |
Centralize the variable display prefs into a new option group class: OptionGroupVariable. It gets initialized with a boolean that indicates if the frame specific options are included so that this can
Centralize the variable display prefs into a new option group class: OptionGroupVariable. It gets initialized with a boolean that indicates if the frame specific options are included so that this can be used in both the "frame variable" and "target variable" commands.
Removed the global functionality from the "frame variable" command. Users should switch to using the "target variable" command.
llvm-svn: 134594
show more ...
|
| #
644247c1 |
| 07-Jul-2011 |
Greg Clayton <[email protected]> |
Added "target variable" command that allows introspection of global variables prior to running your binary. Zero filled sections now get section data correctly filled with zeroes when Target::ReadMem
Added "target variable" command that allows introspection of global variables prior to running your binary. Zero filled sections now get section data correctly filled with zeroes when Target::ReadMemory reads from the object file section data.
Added new option groups and option values for file lists. I still need to hook up all of the options to "target variable" to allow more complete introspection by file and shlib.
Added the ability for ValueObjectVariable objects to be created with only the target as the execution context. This allows them to be read from the object files through Target::ReadMemory(...).
Added a "virtual Module * GetModule()" function to the ValueObject class. By default it will look to the parent variable object and return its module. The module is needed when we have global variables that have file addresses (virtual addresses that are specific to module object files) and in turn allows global variables to be displayed prior to running.
Removed all of the unused proxy object support that bit rotted in lldb_private::Value.
Replaced a lot of places that used "FileSpec::Compare (lhs, rhs) == 0" code with the more efficient "FileSpec::Equal (lhs, rhs)".
Improved logging in GDB remote plug-in.
llvm-svn: 134579
show more ...
|
| #
91da589d |
| 20-Jun-2011 |
Jim Ingham <[email protected]> |
The "-r" option should work for both "-n" and "-s", but it was only set to work for "-s".
llvm-svn: 133479
|
| #
d61c10bc |
| 16-Jun-2011 |
Caroline Tice <[email protected]> |
Add 'batch_mode' to CommandInterpreter. Modify InputReaders to not write output (prompts, instructions,etc.) if the CommandInterpreter is in batch_mode.
Also, finish updating InputReaders to write
Add 'batch_mode' to CommandInterpreter. Modify InputReaders to not write output (prompts, instructions,etc.) if the CommandInterpreter is in batch_mode.
Also, finish updating InputReaders to write to the asynchronous stream, rather than using the Debugger's output file directly.
llvm-svn: 133162
show more ...
|
| #
c60695a7 |
| 05-May-2011 |
Jim Ingham <[email protected]> |
Fix the "target stop-hook add" input reader so that it won't say the stop hook was added if the input was interrupted.
llvm-svn: 130907
|
| #
effe5c95 |
| 03-May-2011 |
Greg Clayton <[email protected]> |
Added new OptionGroup classes for UInt64, UUID, File and Boolean values.
Removed the "image" command and moved it to "target modules". Added an alias for "image" to "target modules".
Added some ne
Added new OptionGroup classes for UInt64, UUID, File and Boolean values.
Removed the "image" command and moved it to "target modules". Added an alias for "image" to "target modules".
Added some new target commands to be able to add and load modules to a target: (lldb) target modules add <path> (lldb) target modules load [--file <path>] [--slide <offset>] [<sect-name> <sect-load-addr> ...]
So you can load individual sections without running a target:
(lldb) target modules load --file /usr/lib/libSystem.B.dylib __TEXT 0x7fccc80000 __DATA 0x1234000000
Or you can rigidly slide an entire shared library:
(lldb) target modules load --file /usr/lib/libSystem.B.dylib --slid 0x7fccc80000
This should improve bare board debugging when symbol files need to be slid around manually.
llvm-svn: 130796
show more ...
|
| #
29651555 |
| 03-May-2011 |
Johnny Chen <[email protected]> |
The 'target stop-hook add' command is missing the stop hook added message for one-liner.
llvm-svn: 130741
|
| #
b1372c08 |
| 02-May-2011 |
Johnny Chen <[email protected]> |
Add a one-liner option, for example, "-o 'expr ptr'", to the 'target stop-hook add' command.
llvm-svn: 130740
|
| #
969ed3d1 |
| 02-May-2011 |
Caroline Tice <[email protected]> |
This patch captures and serializes all output being written by the command line driver, including the lldb prompt being output by editline, the asynchronous process output & error messages, and async
This patch captures and serializes all output being written by the command line driver, including the lldb prompt being output by editline, the asynchronous process output & error messages, and asynchronous messages written by target stop-hooks.
As part of this it introduces a new Stream class, StreamAsynchronousIO. A StreamAsynchronousIO object is created with a broadcaster, who will eventually broadcast the stream's data for a listener to handle, and an event type indicating what type of event the broadcaster will broadcast. When the Write method is called on a StreamAsynchronousIO object, the data is appended to an internal string. When the Flush method is called on a StreamAsynchronousIO object, it broadcasts it's data string and clears the string.
Anything in lldb-core that needs to generate asynchronous output for the end-user should use the StreamAsynchronousIO objects.
I have also added a new notification type for InputReaders, to let them know that a asynchronous output has been written. This is to allow the input readers to, for example, refresh their prompts and lines, if desired. I added the case statements to all the input readers to catch this notification, but I haven't added any code for handling them yet (except to the IOChannel input reader).
llvm-svn: 130721
show more ...
|
| #
176761e5 |
| 19-Apr-2011 |
Greg Clayton <[email protected]> |
Added a new option to the "source list" command that allows us to see where line tables specify breakpoints can be set in the source. When dumping the source, the number of breakpoints that can be se
Added a new option to the "source list" command that allows us to see where line tables specify breakpoints can be set in the source. When dumping the source, the number of breakpoints that can be set on a source line are shown as a prefix:
(lldb) source list -f test.c -l1 -c222 -b 1 #include <stdio.h> 2 #include <sys/fcntl.h> 3 #include <unistd.h> 4 int 5 sleep_loop (const int num_secs) [2] 6 { 7 int i; [1] 8 for (i=0; i<num_secs; ++i) 9 { [1] 10 printf("%d of %i - sleep(1);\n", i, num_secs); [1] 11 sleep(1); 12 } 13 return 0; [1] 14 } 15 16 int 17 main (int argc, char const* argv[]) [1] 18 { [1] 19 printf("Process: %i\n\n", getpid()); [1] 20 puts("Press any key to continue..."); getchar(); [1] 21 sleep_loop (20); 22 return 12; [1] 23 }
Above we can see there are two breakpoints for line 6 and one breakpoint for lines 8, 10, 11, 14, 18, 19, 20, 21 and 23. All other lines have no line table entries for them. This helps visualize the data provided in the debug information without having to manually dump all line tables. It also includes all inline breakpoint that may result for a given file which can also be very handy to see.
llvm-svn: 129747
show more ...
|
| #
1ee61a7f |
| 18-Apr-2011 |
Johnny Chen <[email protected]> |
Add a test script for exercising the "taregt create", "target list", and "target select" commands.
llvm-svn: 129717
|