- Jul 29, 2011
-
-
- Jul 28, 2011
-
-
Johnny Chen authored
by specifying your EXE make variable via your Makefile or within the Python test script. llvm-svn: 136394
-
Johnny Chen authored
rdar://problem/9691614. llvm-svn: 136386
-
rdar://problem/8668674Johnny Chen authored
Make the test criteria more stringent with respect to rdar://problem/8668674 to prevent accidental pass. llvm-svn: 136316
-
Enrico Granata authored
llvm-svn: 136293
-
Johnny Chen authored
self.expect("expression -- '(anonymous namespace)::i'", VARIABLES_DISPLAYED_CORRECTLY, substrs = [" = 3"]) to get rid of the '(anonymous namespace)', which is not c++ syntax, thingy fed to the expression parser. According to rdar://problem/8668674. It is still marked expectedFailure since the bug has not been fixed. llvm-svn: 136290
-
- Jul 27, 2011
-
-
Johnny Chen authored
Fix the bug and add a test case. llvm-svn: 136265
-
Enrico Granata authored
make the C++stdlib string summary work even if for some reason std::basic_string<char> ends up in the debug info instead of std::string llvm-svn: 136246
-
Johnny Chen authored
llvm-svn: 136230
-
Johnny Chen authored
llvm-svn: 136227
-
Johnny Chen authored
llvm-svn: 136194
-
Johnny Chen authored
llvm-svn: 136187
-
Johnny Chen authored
llvm-svn: 136184
-
- Jul 26, 2011
-
-
Enrico Granata authored
llvm-svn: 136147
-
Johnny Chen authored
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
-
Johnny Chen authored
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
-
Johnny Chen authored
to be included from lldb.swig: python-typemaps.swig and python-wrapper.swig. llvm-svn: 136117
-
Jason Molenda authored
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
-
Jim Ingham authored
Indent the frames in the "thread.GetStatus" frame listing. Also put the same space after each thread listing for "thread backtrace all" as "thread backtrace 1 3 5" llvm-svn: 136052
-
Johnny Chen authored
llvm-svn: 136028
-
Johnny Chen authored
llvm-svn: 136026
-
Johnny Chen authored
llvm-svn: 136016
-
Johnny Chen authored
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
-
Johnny Chen authored
llvm-svn: 135997
-
Enrico Granata authored
llvm-svn: 135989
-
- Jul 25, 2011
-
-
Johnny Chen authored
the SBValue.linked_list_iter() API is equal to [1, 2, 4, 5]. llvm-svn: 135944
-
Johnny Chen authored
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
-
Enrico Granata authored
Python synthetic providers must provide a num_children call; this was not specified in the docs up to now llvm-svn: 135933
-
Enrico Granata authored
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
-
- Jul 24, 2011
-
-
Enrico Granata authored
- 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
-
- Jul 23, 2011
-
-
Jim Ingham authored
Don't delete & remake the exception breakpoints every time you need them. 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
-
Johnny Chen authored
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
-
- Jul 22, 2011
-
-
Johnny Chen authored
SetLoadAddress (lldb::addr_t load_addr, lldb::SBTarget &target); llvm-svn: 135793
-
Peter Collingbourne authored
and fix RegisterContextDarwin_x86_64.cpp build RegisterContextDarwin_arm.cpp contains too much platform specific code to easily fix. llvm-svn: 135792
-
Peter Collingbourne authored
llvm-svn: 135791
-
Peter Collingbourne authored
some code to use it llvm-svn: 135790
-
Enrico Granata authored
debugging printfs() for data visualization turned into a meaningful log: - introduced a new log category `types' in channel `lldb' llvm-svn: 135773
-
Greg Clayton authored
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
-
Johnny Chen authored
llvm-svn: 135737
-
Johnny Chen authored
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
-