summaryrefslogtreecommitdiffstats
path: root/lldb
Commit message (Collapse)AuthorAgeFilesLines
* adding required utility function to SWIG interfaceEnrico Granata2011-07-261-0/+43
| | | | llvm-svn: 136147
* We can do better with the SBValue.linked_list_iter() API by supplying a defaultJohnny Chen2011-07-262-22/+42
| | | | | | | | | | | | | | end of list test function as __eol_test__. The simple example can be reduced to: for t in task_head.linked_list_iter('next'): print t Modify the test program to exercise the API for both cases: supplying or not supplying an end of list test function. llvm-svn: 136144
* The test function to determine whether we have reached the end of the list wasJohnny Chen2011-07-262-31/+19
| | | | | | | | | | | too complex in the test case. We can just simply test that the SBValue object is a valid object and it does not correspond to a null pointer in order to say that EOL has not been reached. Modify the test case and the lldb.py docstring to have a more compact test function. llvm-svn: 136123
* lldb.swig (the SWIG input file) has become too large. Modularize a bit by ↵Johnny Chen2011-07-263-639/+639
| | | | | | | | introducing two files to be included from lldb.swig: python-typemaps.swig and python-wrapper.swig. llvm-svn: 136117
* RNBRemote.cpp, RNBRemote.h: Add a new qGetPid packet which returnsJason Molenda2011-07-262-0/+18
| | | | | | | | | | | | | | | the pid of the process currently being debugged by debugserer in hex, or 0 if unavailable. This is effectively the same as the qC packet but that packet is not clear in either its documentation or implementation (in gdb et al) as to whether it is intended to return a pid or a thread id. qGetPid is unambiguous. If qGetPid is unimplemented in the remote debugserver, the debugger may try qC and see what kind of value is returned.. llvm-svn: 136055
* Indent the frames in the "thread.GetStatus" frame listing. Also put the ↵Jim Ingham2011-07-262-0/+6
| | | | | | same space after each thread listing for "thread backtrace all" as "thread backtrace 1 3 5" llvm-svn: 136052
* Add newline at end of file.Johnny Chen2011-07-261-1/+1
| | | | llvm-svn: 136028
* Minor modification.Johnny Chen2011-07-261-1/+2
| | | | llvm-svn: 136026
* Rename the parameter for the end-of-list test function from end_of_list to ↵Johnny Chen2011-07-251-2/+2
| | | | | | end_of_list_test. llvm-svn: 136016
* Add cross references between the docstrings for regular SBValue iteration:Johnny Chen2011-07-252-6/+16
| | | | | | | | | | | | for child in value: # do something with the child value and SBValue.linked_list_iter(): for task in task_head.linked_list_iter('next', eol_test): # visit each item in the linked list llvm-svn: 136015
* Add an example type summary -- for lldb::ConnectionStatus.Johnny Chen2011-07-251-0/+1
| | | | llvm-svn: 135997
* bug fix in ClangASTType when trying to get size of a non-complete typeEnrico Granata2011-07-251-2/+6
| | | | llvm-svn: 135989
* Add a stronger assert for the test to ensure that the visited items from ↵Johnny Chen2011-07-251-0/+9
| | | | | | | | iterating through the SBValue.linked_list_iter() API is equal to [1, 2, 4, 5]. llvm-svn: 135944
* Provide an add-on API to SBValue class by post-processing to provide a wayJohnny Chen2011-07-254-0/+207
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to iterate through an SBValue instance by treating it as the head of a linked list. API program must provide two args to the linked_list_iter() method: the first being the child member name which points to the next item on the list and the second being a Python function which an SBValue (for the next item) and returns True if end of list is reached, otherwise it returns False. For example, suppose we have the following sample program. #include <stdio.h> class Task { public: int id; Task *next; Task(int i, Task *n): id(i), next(n) {} }; int main (int argc, char const *argv[]) { Task *task_head = new Task(-1, NULL); Task *task1 = new Task(1, NULL); Task *task2 = new Task(2, NULL); Task *task3 = new Task(3, NULL); // Orphaned. Task *task4 = new Task(4, NULL); Task *task5 = new Task(5, NULL); task_head->next = task1; task1->next = task2; task2->next = task4; task4->next = task5; int total = 0; // Break at this line Task *t = task_head; while (t != NULL) { if (t->id >= 0) ++total; t = t->next; } printf("We have a total number of %d tasks\n", total); return 0; } The test program produces the following output while exercising the linked_list_iter() SBVAlue API: task_head: TypeName -> Task * ByteSize -> 8 NumChildren -> 2 Value -> 0x0000000106400380 ValueType -> local_variable Summary -> None IsPointerType -> True Location -> 0x00007fff65f06e60 (Task *) next = 0x0000000106400390 (int) id = 1 (Task *) next = 0x00000001064003a0 (Task *) next = 0x00000001064003a0 (int) id = 2 (Task *) next = 0x00000001064003c0 (Task *) next = 0x00000001064003c0 (int) id = 4 (Task *) next = 0x00000001064003d0 (Task *) next = 0x00000001064003d0 (int) id = 5 (Task *) next = 0x0000000000000000 llvm-svn: 135938
* Python synthetic providers must provide a num_children call; this was not ↵Enrico Granata2011-07-251-4/+5
| | | | | | specified in the docs up to now llvm-svn: 135933
* new flag -P to type synth add lets you type a Python class interactivelyEnrico Granata2011-07-2513-20/+375
| | | | | | | | added a final newline to fooSynthProvider.py new option to automatically save user input in InputReaderEZ checking for NULL pointers in several new places llvm-svn: 135916
* Python synthetic children:Enrico Granata2011-07-2426-116/+1299
| | | | | | | | | | | | | | - you can now define a Python class as a synthetic children producer for a type the class must adhere to this "interface": def __init__(self, valobj, dict): def get_child_at_index(self, index): def get_child_index(self, name): then using type synth add -l className typeName (e.g. type synth add -l fooSynthProvider foo) (This is still WIP with lots to be added) A small test case is available also as reference llvm-svn: 135865
* Don't delete & remake the exception breakpoints every time you need them. ↵Jim Ingham2011-07-235-18/+24
| | | | | | | | | Make them once & enable/disable them as appropriate. Also reformatted the lldb summaries to make them easier to read, and added one. I'll do more as I get time. llvm-svn: 135827
* Add an additional formatter class RecursiveDecentFormatter which prints theJohnny Chen2011-07-223-10/+75
| | | | | | | | | | | | | | | | | value and the decendents. For an example, rdf = lldbutil.RecursiveDecentFormatter(indent_child=2) print rdf.format(g_table) produces: (const char **[2]) g_table = 0x00000001055a80f0 (location) (const char **) [0] = 0x00000001055a8080 (const char *) *[0] = "Sunday" (const char **) [1] = 0x00000001055a80c0 (const char *) *[1] = "Monday" llvm-svn: 135815
* Add new API for SBAddress to the fuzz test:Johnny Chen2011-07-221-0/+1
| | | | | | | SetLoadAddress (lldb::addr_t load_addr, lldb::SBTarget &target); llvm-svn: 135793
* Disable compilation of RegisterContextDarwin_arm.cpp on non-Darwin platforms,Peter Collingbourne2011-07-222-1/+5
| | | | | | | | | and fix RegisterContextDarwin_x86_64.cpp build RegisterContextDarwin_arm.cpp contains too much platform specific code to easily fix. llvm-svn: 135792
* Update ProcessLinux::CanDebug prototypePeter Collingbourne2011-07-222-2/+2
| | | | llvm-svn: 135791
* Add support for platforms without sa_len to SocketAddress, and modifyPeter Collingbourne2011-07-223-23/+23
| | | | | | some code to use it llvm-svn: 135790
* some editing of data visualization error messages to make them more meaningfulEnrico Granata2011-07-226-70/+152
| | | | | | | debugging printfs() for data visualization turned into a meaningful log: - introduced a new log category `types' in channel `lldb' llvm-svn: 135773
* Make the SBAddress class easier to use when using the publicGreg Clayton2011-07-228-27/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | API. SBTarget changes include changing: bool SBTarget::ResolveLoadAddress (lldb::addr_t vm_addr, lldb::SBAddress& addr); to be: lldb::SBAddress SBTarget::ResolveLoadAddress (lldb::addr_t vm_addr); SBAddress can how contruct itself using a load address and a target which can be used to resolve the address: SBAddress (lldb::addr_t load_addr, lldb::SBTarget &target); This will actually just call the new SetLoadAddress accessor: void SetLoadAddress (lldb::addr_t load_addr, lldb::SBTarget &target); This function will always succeed in making a SBAddress object that can be used in API calls (even if "target" isn't valid). If "target" is valid and there are sections currently loaded, then it will resolve the address to a section offset address if it can. Else an address with a NULL section and an offset that is the "load_addr" that was passed in. We do this because a load address might be from the heap or stack. llvm-svn: 135770
* Fix comment.Johnny Chen2011-07-221-3/+3
| | | | llvm-svn: 135737
* Add BasicFormatter and ChildVisitingFormatter utility classes to the ↵Johnny Chen2011-07-223-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | lldbutil.py module which provide some convenient ways to print an SBValue object. Use that in TestValueAPI.py to print the 'days_of_week' char* array variable. For an example: cvf = lldbutil.ChildVisitingFormatter(indent=2) print cvf.format(days_of_week) produces: (const char *[7]) days_of_week = 0x00000001026a5060 (location) (const char *) [0] = "Sunday" (const char *) [1] = "Monday" (const char *) [2] = "Tuesday" (const char *) [3] = "Wednesday" (const char *) [4] = "Thursday" (const char *) [5] = "Friday" (const char *) [6] = "Saturday" llvm-svn: 135736
* when typing a summary string you can use the %S symbol to explicitly ↵Enrico Granata2011-07-2228-75/+1663
| | | | | | | | | | | | | | | 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
* Add test scenario of SBValue APIs for the 'days_of_week' global variable.Johnny Chen2011-07-211-0/+7
| | | | llvm-svn: 135716
* Add test scenario for exercising SBValue API: TypeIsPointerType() and ↵Johnny Chen2011-07-211-0/+10
| | | | | | GetByteSize(). llvm-svn: 135699
* Initialize the all important automatic variable 'lldb::ConnectionStatus ↵Johnny Chen2011-07-211-1/+1
| | | | | | | | status' before invoking the Read(...) method to read in bytes. Similar to r135461. llvm-svn: 135695
* If we are telling only one thread to run in debugserver, and that thread has ↵Jim Ingham2011-07-213-31/+99
| | | | | | | | been suspended from outside the debugger, resume it before running so we will actually make progress. llvm-svn: 135655
* essentials contains two small summaries that you might really want to use; ↵Enrico Granata2011-07-212-0/+14
| | | | | | lldb contains some basic summaries for use in debugging LLDB itself. to use them, you must type category enable lldb llvm-svn: 135653
* More KDP fixes and logging cleanup.Greg Clayton2011-07-214-151/+229
| | | | llvm-svn: 135652
* Change docstring wording: from 'method' to 'function'.Johnny Chen2011-07-211-1/+1
| | | | llvm-svn: 135648
* Add docstring for SBInstructionList class.Johnny Chen2011-07-211-0/+14
| | | | llvm-svn: 135647
* Add docstring for SBCommandReturnObject class.Johnny Chen2011-07-211-0/+7
| | | | llvm-svn: 135642
* Add docstring for SBCommandInterpreter class.Johnny Chen2011-07-201-0/+44
| | | | llvm-svn: 135631
* Add docstring for SBBroadcaster class.Johnny Chen2011-07-201-0/+11
| | | | llvm-svn: 135630
* Add a note.Johnny Chen2011-07-201-0/+1
| | | | llvm-svn: 135615
* Minor modification.Johnny Chen2011-07-201-1/+1
| | | | llvm-svn: 135606
* Skip the remaining -Y? (skipping ? layers of summaries) tests if using a ↵Johnny Chen2011-07-201-0/+16
| | | | | | | | known version of Apple gcc build which produces wrong namespace for std::string in debug info. llvm-svn: 135597
* Added KDP resume, suspend, set/remove breakpoint, and kernel version support.Greg Clayton2011-07-206-57/+269
| | | | | | Also we now display a live update of the kexts that we are loading. llvm-svn: 135563
* Remove extra launch arguments.Greg Clayton2011-07-201-10/+0
| | | | llvm-svn: 135560
* Added register reading support for ARM, i386 and x86_64.Greg Clayton2011-07-207-49/+177
| | | | llvm-svn: 135557
* Add some docstrings for SBFileSpec class.Johnny Chen2011-07-201-0/+21
| | | | llvm-svn: 135553
* Add some docstrings for SBError class.Johnny Chen2011-07-201-0/+47
| | | | llvm-svn: 135547
* A more succinct assertTrue.Johnny Chen2011-07-201-2/+1
| | | | llvm-svn: 135544
* Minor change; add an assertTrue stmt.Johnny Chen2011-07-201-0/+1
| | | | llvm-svn: 135542
* Add some docstrings for SBSourceManager class.Johnny Chen2011-07-191-0/+26
| | | | llvm-svn: 135539
OpenPOWER on IntegriCloud