summaryrefslogtreecommitdiffstats
path: root/lldb/source/Commands
Commit message (Collapse)AuthorAgeFilesLines
...
* CommandObjectProcess was recently changed to automatically use the platformGreg Clayton2011-11-281-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to launch a process for debugging. Since this isn't supported on all platforms, we need to do what we used to do if this isn't supported. I added: bool Platform::CanDebugProcess (); This will get checked before trying to launch a process for debugging and then fall back to launching the process through the current host debugger. This should solve the issue for linux and keep the platform code clean. Centralized logging code for logging errors, warnings and logs when reporting things for modules or symbol files. Both lldb_private::Module and lldb_private::SymbolFile now have the following member functions: void LogMessage (Log *log, const char *format, ...); void ReportWarning (const char *format, ...); void ReportError (const char *format, ...); These will all output the module name and object (if any) such as: "error: lldb.so ...." "warning: my_archive.a(foo.o) ...." This will keep the output consistent and stop a lot of logging calls from having to try and output all of the information that uniquely identifies a module or symbol file. Many places in the code were grabbing the path to the object file manually and if the module represented a .o file in an archive, we would see log messages like: error: foo.a - some error happened llvm-svn: 145219
* <rdar://problem/10033754>Greg Clayton2011-11-221-2/+2
| | | | | | | | | Fixed an issue with the options for memory read where --count couldn't be used with the --binary option when writing data to a file. Also removed the GDB format option from the --binary version of memory read. llvm-svn: 145067
* Save the arguments for a process launch in the target.run-args so they canGreg Clayton2011-11-211-0/+3
| | | | | | easily be used in the next run. llvm-svn: 145051
* Use a pseudoterminal for local processes if no STDIO redirection or otherGreg Clayton2011-11-171-1/+4
| | | | | | file actions have been specified. llvm-svn: 144922
* Fixed an issue with the pthread_setspecific() where we weren't NULL-ing outGreg Clayton2011-11-172-2/+3
| | | | | | | | | | | | the thread specific data and were destroying the thread specfic data more than once. Also added the ability to ask a lldb::StateType if it is stopped with an additional paramter of "must_exist" which means that the state must be a stopped state for a process that still exists. This means that eStateExited and eStateUnloaded will no longer return true if "must_exist" is set to true. llvm-svn: 144875
* Added a new class to Process.h: ProcessAttachInfo. This class contains enoughGreg Clayton2011-11-152-182/+66
| | | | | | | | | | | | | | | | | | | | | info for us to attach by pid, or by name and will also allow us to eventually do a lot more powerful attaches. If you look at the options for the "platform process list" command, there are many options which we should be able to specify. This will allow us to do things like "attach to a process named 'tcsh' that has a parent process ID of 123", or "attach to a process named 'x' which has an effective user ID of 345". I finished up the --shell implementation so that it can be used without the --tty option in "process launch". The "--shell" option now can take an optional argument which is the path to the shell to use (or a partial name like "sh" which we will find using the current PATH environment variable). Modified the Process::Attach to use the new ProcessAttachInfo as the sole argument and centralized a lot of code that was in the "process attach" Execute function so that everyone can take advantage of the powerful new attach functionality. llvm-svn: 144615
* <rdar://problem/10338439>Greg Clayton2011-11-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the actual fix for the above radar where global variables that weren't initialized were not being shown correctly when leaving the DWARF in the .o files. Global variables that aren't intialized have symbols in the .o files that specify they are undefined and external to the .o file, yet document the size of the variable. This allows the compiler to emit a single copy, but makes it harder for our DWARF in .o files with the executable having a debug map because the symbol for the global in the .o file doesn't exist in a section that we can assign a fixed up linked address to, and also the DWARF contains an invalid address in the "DW_OP_addr" location (always zero). This means that the DWARF is incorrect and actually maps all such global varaibles to the first file address in the .o file which is usually the first function. So we can fix this in either of two ways: make a new fake section in the .o file so that we have a file address in the .o file that we can relink, or fix the the variable as it is created in the .o file DWARF parser and actually give it the file address from the executable. Each variable contains a SymbolContextScope, or a single pointer that helps us to recreate where the variables came from (which module, file, function, etc). This context helps us to resolve any file addresses that might be in the location description of the variable by pointing us to which file the file address comes from, so we can just replace the SymbolContextScope and also fix up the location, which we would have had to do for the other case as well, and update the file address. Now globals display correctly. The above changes made it possible to determine if a variable is a global or static variable when parsing DWARF. The DWARF emits a DW_TAG_variable tag for each variable (local, global, or static), yet DWARF provides no way for us to classify these variables into these categories. We can now detect when a variable has a simple address expressions as its location and this will help us classify these correctly. While making the above changes I also noticed that we had two symbol types: eSymbolTypeExtern and eSymbolTypeUndefined which mean essentially the same thing: the symbol is not defined in the current object file. Symbol objects also have a bit that specifies if a symbol is externally visible, so I got rid of the eSymbolTypeExtern symbol type and moved all code locations that used it to use the eSymbolTypeUndefined type. llvm-svn: 144489
* Added the ability to run a process in a shell on MacOSX currently when usingGreg Clayton2011-11-121-1/+3
| | | | | | | | | | | | the --tty option. So you can now get shell expansion and file redirection: (lldb) process launch --tty --shell -- *.jpg < in.txt > out.txt Again, the "--tty" is mandatory for now until we hook this up to other functions. The shell is also currently hard coded to "/bin/bash" and not the "SHELL" variable. "/bin/tcsh" was causing problems which I need to dig into. llvm-svn: 144443
* Fix order of arguments for target stop-hook list/delete. HavingJason Molenda2011-11-101-4/+4
| | | | | | | | | | | | the argument description in the command name could cause a command alias to crash, e.g. command alias zzz target stop-hook delete 1 because the "name" is used to re-fetch the exact CommandObject when adding the final arg. <rdar://problem/10423753> llvm-svn: 144330
* Fix help strings that refer to the "commands" top-level noun. Jason Molenda2011-11-101-9/+9
| | | | | | It's "command", "commands" is not recognized. llvm-svn: 144327
* Added the ability for many of the "target modules dump xxx" commands to findGreg Clayton2011-11-101-76/+97
| | | | | | | modules first in the target, then fall back to the global shared module cache, then fall back to the global module list. llvm-svn: 144256
* "source list -n" should use eFunctionNameTypeAuto not eFunctionNameTypeBase ↵Jim Ingham2011-11-091-2/+2
| | | | | | for the name lookup. llvm-svn: 144199
* Moved many of the "settings" that used to be in "target.process.*" to justGreg Clayton2011-11-083-98/+99
| | | | | | | | be in the target. All of the environment, args, stdin/out/err files, etc have all been moved. Also re-enabled the ability to launch a process in a separate terminal on MacOSX. llvm-svn: 144061
* this patch addresses several issues with "command script" subcommands:Enrico Granata2011-11-072-32/+159
| | | | | | | | | | | | a) adds a new --synchronicity (-s) setting for "command script add" that allows the user to decide if scripted commands should run synchronously or asynchronously (which can make a difference in how events are handled) b) clears up several error messages c) adds a new --allow-reload (-r) setting for "command script import" that allows the user to reload a module even if it has already been imported before d) allows filename completion for "command script import" (much like what happens for "target create") e) prevents "command script add" from replacing built-in commands with scripted commands f) changes AddUserCommand() to take an std::string instead of a const char* (for performance reasons) plus, it fixes an issue in "type summary add" command handling which caused several test suite errors llvm-svn: 144035
* Fixed the Xcode project building of LLVM to be a bit more user friendly:Greg Clayton2011-11-042-54/+90
| | | | | | | | | | | | | | | | | | | - If you download and build the sources in the Xcode project, x86_64 builds by default using the "llvm.zip" checkpointed LLVM. - If you delete the "lldb/llvm.zip" and the "lldb/llvm" folder, and build the Xcode project will download the right LLVM sources and build them from scratch - If you have a "lldb/llvm" folder already that contains a "lldb/llvm/lib" directory, we will use the sources you have placed in the LLDB directory. Python can now be disabled for platforms that don't support it. Changed the way the libllvmclang.a files get used. They now all get built into arch specific directories and never get merged into universal binaries as this was causing issues where you would have to go and delete the file if you wanted to build an extra architecture slice. llvm-svn: 143678
* Modified all Process::Launch() calls to use a ProcessLaunchInfo structureGreg Clayton2011-11-032-185/+158
| | | | | | | | on internal only (public API hasn't changed) to simplify the paramter list to the launch calls down into just one argument. Also all of the argument, envronment and stdio things are now handled in a much more centralized fashion. llvm-svn: 143656
* warnings: Fix a bunch of -Wreorder problems.Daniel Dunbar2011-10-311-1/+1
| | | | llvm-svn: 143381
* Fixed the continuation dumping of instructions to properly advance the Greg Clayton2011-10-281-10/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | previous address only by the number of bytes consumed by the disassembly: (lldb) x/4i 0x0000000100000ea9 0x100000ea9: 66 c7 45 fa 10 00 movw $16, -6(%rbp) 0x100000eaf: c7 45 f4 20 00 00 00 movl $32, -12(%rbp) 0x100000eb6: e8 47 00 00 00 callq 0x0000000100000f02 ; void f<nullptr_t>(nullptr_t) 0x100000ebb: 8b 45 fc movl -4(%rbp), %eax (lldb) 0x100000ebe: 48 83 c4 10 addq $16, %rsp 0x100000ec2: 5d popq %rbp 0x100000ec3: c3 ret 0x100000ec4: 90 nop (lldb) 0x100000ec5: 90 nop 0x100000ec6: 90 nop 0x100000ec7: 90 nop 0x100000ec8: 90 nop (lldb) 0x100000ec9: 90 nop 0x100000eca: 90 nop 0x100000ecb: 90 nop 0x100000ecc: 90 nop (lldb) 0x100000ecd: 90 nop 0x100000ece: 90 nop 0x100000ecf: 90 nop 0x100000ed0: 55 pushq %rbp llvm-svn: 143254
* Add an example customization directory which uses a binutils.py module to ↵Johnny Chen2011-10-281-1/+1
| | | | | | | | provide commands to print the binary representaion of an integer. llvm-svn: 143252
* Added a function to the Host that gets a dummy targetSean Callanan2011-10-271-0/+4
| | | | | | | | for it, so that people who want to use LLDB as a calculator can run simple expressions without needing a target or process. llvm-svn: 143147
* Added support for the new ".apple_objc" accelerator tables. These tables areGreg Clayton2011-10-275-9/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in the same hashed format as the ".apple_names", but they map objective C class names to all of the methods and class functions. We need to do this because in the DWARF the methods for Objective C are never contained in the class definition, they are scattered about at the translation unit level and they don't even have attributes that say the are contained within the class itself. Added 3 new formats which can be used to display data: eFormatAddressInfo eFormatHexFloat eFormatInstruction eFormatAddressInfo describes an address such as function+offset and file+line, or symbol + offset, or constant data (c string, 2, 4, 8, or 16 byte constants). The format character for this is "A", the long format is "address". eFormatHexFloat will print out the hex float format that compilers tend to use. The format character for this is "X", the long format is "hex float". eFormatInstruction will print out disassembly with bytes and it will use the current target's architecture. The format character for this is "i" (which used to be being used for the integer format, but the integer format also has "d", so we gave the "i" format to disassembly), the long format is "instruction". Mate the lldb::FormatterChoiceCriterion enumeration private as it should have been from the start. It is very specialized and doesn't belong in the public API. llvm-svn: 143114
* When completing "help foo bar" if "foo" is not a real command, don't ask its ↵Jim Ingham2011-10-261-9/+26
| | | | | | NULL command object to complete the line. llvm-svn: 143047
* A simple fix for the GDB format strings so the byte size parameter getsGreg Clayton2011-10-261-6/+63
| | | | | | | | | | | | | properly marked as valid. Also modified the "memory read" command to be able to intelligently repeat subsequent memory requests, so now you can do: (lldb) memory read --format hex --count 32 0x1000 Then hit enter to keep viewing the memory that follows the last valid request. llvm-svn: 143015
* Cleaned up many error codes. For any who is filling in error strings intoGreg Clayton2011-10-2618-116/+98
| | | | | | | | | | | | | lldb_private::Error objects the rules are: - short strings that don't start with a capitol letter unless the name is a class or anything else that is always capitolized - no trailing newline character - should be one line if possible Implemented a first pass at adding "--gdb-format" support to anything that accepts format with optional size/count. llvm-svn: 142999
* Patch from Dragos to fix Linux build!Johnny Chen2011-10-251-1/+1
| | | | llvm-svn: 142932
* Updated all commands that use a "--format" / "-f" options to use the newGreg Clayton2011-10-258-586/+605
| | | | | | | | | | | | OptionGroupFormat. Updated OptionGroupFormat to be able to also use the "--size" and "--count" options. Commands that use a OptionGroupFormat instance can choose which of the options they want by initializing OptionGroupFormat accordingly. Clients can either get only the "--format", "--format" + "--size", or "--format" + "--size" + "--count". This is in preparation for upcoming chnages where there are alternate ways (GDB format specification) to set a format. llvm-svn: 142911
* Add a "-a" option to "image list" to show the image at a given address.Jim Ingham2011-10-241-107/+164
| | | | llvm-svn: 142833
* Moved lldb::user_id_t values to be 64 bit. This was going to be needed forGreg Clayton2011-10-193-17/+17
| | | | | | | | | | | process IDs, and thread IDs, but was mainly needed for for the UserID's for Types so that DWARF with debug map can work flawlessly. With DWARF in .o files the type ID was the DIE offset in the DWARF for the .o file which is not unique across all .o files, so now the SymbolFileDWARFDebugMap class will make the .o file index part (the high 32 bits) of the unique type identifier so it can uniquely identify the types. llvm-svn: 142534
* this patch introduces a new command script import command which takes as ↵Enrico Granata2011-10-171-0/+73
| | | | | | input a filename for a Python script and imports the module contained in that file. the containing directory is added to the Python path such that dependencies are honored. also, the module may contain an __lldb_init_module(debugger,dict) function, which gets called after importing, and which can somehow initialize the module's interaction with lldb llvm-svn: 142283
* Add a commnad to set a condition for a watchpoint. Example:Johnny Chen2011-10-172-0/+203
| | | | | | | | | | | | | | | watchpoint modify -c 'global==5' modifies the last created watchpoint so that the condition expression is evaluated at the stop point to decide whether we should proceed with the stopping. Also add SBWatchpont::SetCondition(const char *condition) to set condition programmatically. Test cases to come later. llvm-svn: 142227
* SBValue::Watch() and SBValue::WatchPointee() are now the official API for ↵Johnny Chen2011-10-142-33/+33
| | | | | | | | | | | | | | | | | | creating a watchpoint for either the variable encapsulated by SBValue (Watch) or the pointee encapsulated by SBValue (WatchPointee). Removed SBFrame::WatchValue() and SBFrame::WatchLocation() API as a result of that. Modified the watchpoint related test suite to reflect the change. Plus replacing WatchpointLocation with Watchpoint throughout the code base. There are still cleanups to be dome. This patch passes the whole test suite. Check it in so that we aggressively catch regressions. llvm-svn: 141925
* Fixed a case where we might end up trying to parse a type in the DWARF ↵Greg Clayton2011-10-131-5/+0
| | | | | | parser for a method whose class isn't currently in the process of completing itself. Currently, methods of a class, must be parsed when the class type that contains the method is asked to complete itself through the clang::ExternalASTSource virtual functions. Now we "do the right thing" by checking if the class is being defined, and if so we parse it, else we tell the class to complete itself so everything happens correctly. llvm-svn: 141908
* Revert the change to "target variable" that was causing test suite failures.Greg Clayton2011-10-131-1/+1
| | | | llvm-svn: 141879
* Always use the full variable name when dumping globals since they mightGreg Clayton2011-10-131-1/+1
| | | | | | be in namespaces. llvm-svn: 141845
* Added ClangNamespaceDecl * parameters to severalSean Callanan2011-10-122-4/+7
| | | | | | | core Module functions that the expression parser will soon be using. llvm-svn: 141766
* Fix the option lists that "--file" belongs to so the help won't come out whonky.Jim Ingham2011-10-071-1/+1
| | | | llvm-svn: 141423
* Re-organized the contents of RangeMap.h to be more concise and also allow ↵Greg Clayton2011-10-073-60/+46
| | | | | | | | | | for a Range, RangeArray, RangeData (range + data), or a RangeDataArray. We have many range implementations in LLDB and I will be converting over to using the classes in RangeMap.h so we can have one set of code that does ranges and searching of ranges. Fixed up DWARFDebugAranges to use the new range classes. Fixed the enumeration parsing to take a lldb_private::Error to avoid a lot of duplicated code. Now when an invalid enumeration is supplied, an error will be returned and that error will contain a list of the valid enumeration values. llvm-svn: 141382
* "target variable" will now display the current frame's compile unit globalsGreg Clayton2011-10-051-3/+51
| | | | | | and statics when no arguments are given. llvm-svn: 141222
* Add capability to set ignore count for watchpoint on the command line:Johnny Chen2011-10-052-0/+188
| | | | | | | | watchpoint ignore -i <count> [<watchpt-id | watchpt-id-list>] Add tests of watchpoint ignore_count for command line as well as API. llvm-svn: 141217
* Cleaned up the the code that figures out the inlined stack frames given a Greg Clayton2011-10-011-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | symbol context that represents an inlined function. This function has been renamed internally to: bool SymbolContext::GetParentOfInlinedScope (const Address &curr_frame_pc, SymbolContext &next_frame_sc, Address &next_frame_pc) const; And externally to: SBSymbolContext SBSymbolContext::GetParentOfInlinedScope (const SBAddress &curr_frame_pc, SBAddress &parent_frame_addr) const; The correct blocks are now correctly calculated. Switched the stack backtracing engine (in StackFrameList) and the address context printing over to using the internal SymbolContext::GetParentOfInlinedScope(...) so all inlined callstacks will match exactly. llvm-svn: 140910
* Small fix to "frame select" sans frame # feature added yesterday.Jason Molenda2011-09-301-1/+3
| | | | llvm-svn: 140901
* Add an accompanying option to the 'frame variable -w' command to, instead of ↵Johnny Chen2011-09-301-6/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | watching the variable, watch the location pointed to by the variable. An example, (lldb) frame variable -w write -x 1 -g g_char_ptr (char *) g_char_ptr = 0x0000000100100860 ""... Watchpoint created: WatchpointLocation 1: addr = 0x100100860 size = 1 state = enabled type = w declare @ '/Volumes/data/lldb/svn/trunk/test/functionalities/watchpoint/hello_watchlocation/main.cpp:21' ... (lldb) c Process 3936 resuming ... rocess 3936 stopped * thread #2: tid = 0x3403, 0x00000001000009b7 a.out`do_bad_thing_with_location(char*, char) + 23 at main.cpp:27, stop reason = watchpoint 1 frame #0: 0x00000001000009b7 a.out`do_bad_thing_with_location(char*, char) + 23 at main.cpp:27 24 do_bad_thing_with_location(char *char_ptr, char new_val) 25 { 26 *char_ptr = new_val; -> 27 } 28 29 uint32_t access_pool (uint32_t flag = 0); 30 (lldb) Also add TestWatchLocation.py test to exercise this functionality. llvm-svn: 140836
* Add an additional "frame select" usage where it will re-select the current frameJason Molenda2011-09-291-0/+6
| | | | | | | if no frame is specified. This is useful to get the source context lines re-displayed when you need a reminder of where you are in the source currently. llvm-svn: 140819
* Missed one place where we should use the target's SourceManager, not the ↵Jim Ingham2011-09-291-1/+1
| | | | | | debugger's. llvm-svn: 140804
* Fix help string for "frame variable".Johnny Chen2011-09-281-1/+0
| | | | llvm-svn: 140714
* Added an API to SymbolContext to hide the complexity of getting theJim Ingham2011-09-271-8/+3
| | | | | | | function name from a symbol context. Use that in CommandCompletions to get the right name. llvm-svn: 140628
* Add SB API class SBWatchpointLocation and some extra methods to the SBTarget ↵Johnny Chen2011-09-261-0/+1
| | | | | | | | | | | class to iterate on the available watchpoint locations and to perform watchpoint manipulations. I still need to export the SBWatchpointLocation class as well as the added watchpoint manipulation methods to the Python interface. And write test cases for them. llvm-svn: 140575
* Added to the public API to allow symbolication:Greg Clayton2011-09-242-44/+14
| | | | | | | | | | | | | | | | | - New SBSection objects that are object file sections which can be accessed through the SBModule classes. You can get the number of sections, get a section at index, and find a section by name. - SBSections can contain subsections (first find "__TEXT" on darwin, then us the resulting SBSection to find "__text" sub section). - Set load addresses for a SBSection in the SBTarget interface - Set the load addresses of all SBSection in a SBModule in the SBTarget interface - Add a new module the an existing target in the SBTarget interface - Get a SBSection from a SBAddress object This should get us a lot closer to being able to symbolicate using LLDB through the public API. llvm-svn: 140437
* in CommandObjectTargetStopHookList::Execute, if we don't have a target,Jason Molenda2011-09-231-0/+1
| | | | | | | | | | | | return before we try to dereference the target later in the function. Currently, % lldb -x (lldb) target stop-hook list crashes because of this. llvm-svn: 140417
* Added the ability to restrict breakpoints by function name, function regexp, ↵Jim Ingham2011-09-233-68/+82
| | | | | | | | | | selector etc to specific source files. Added SB API's to specify these source files & also more than one module. Added an "exact" option to CompileUnit's FindLineEntry API. llvm-svn: 140362
OpenPOWER on IntegriCloud