Skip to content
  1. Sep 21, 2011
    • Jim Ingham's avatar
      Add a new breakpoint type "break by source regular expression". · 969795f1
      Jim Ingham authored
      Fix the RegularExpression class so it has a real copy constructor.
      Fix the breakpoint setting with multiple shared libraries so it makes
        one breakpoint not one per shared library.
      Add SBFileSpecList, to be used to expose the above to the SB interface (not done yet.)
      
      llvm-svn: 140225
      969795f1
  2. Sep 20, 2011
  3. Sep 18, 2011
    • Greg Clayton's avatar
      Don't put modules for .o files into the global shared module list. We · 762f7135
      Greg Clayton authored
      used to do this because we needed to find the shared pointer for a .o
      file when the .o file's module was needed in a SymbolContext since the
      module in a symbol context was a shared pointer. Now that we are using
      intrusive pointers we don't have this limitation anymore since any
      instrusive shared pointer can be made from a pointer to an object
      all on its own.
      
      Also switched over to having the Module and SymbolVendor use shared 
      pointers to their object files as had a leak on MacOSX when the 
      SymbolVendor's object file wasn't the same as the Module's (debug info
      in a stand along file (dSYM file)). Now everything will correctly clean
      itself up when the module goes away after an executable gets rebuilt.
      
      Now we correctly get rid of .o files that are used with the DWARF with 
      debug map executables on subsequent runs since the only shared pointer
      to the object files in from the DWARF symbol file debug map parser, and
      when the module gets replaced, it destroys to old one along with all .o 
      files. 
      
      Also added a small optimization when using BSD archives where we will
      remove old BSD containers from the shared list when they are outdated.
      
      llvm-svn: 140002
      762f7135
  4. Sep 17, 2011
    • Greg Clayton's avatar
      Adopt the intrusive pointers in: · 4d122c40
      Greg Clayton authored
      lldb_private::Breakpoint
      lldb_private::BreakpointLocations
      lldb_private::BreakpointSite
      lldb_private::Debugger
      lldb_private::StackFrame
      lldb_private::Thread
      lldb_private::Target
      
      llvm-svn: 139985
      4d122c40
    • Greg Clayton's avatar
      Removed the function: · a2eee184
      Greg Clayton authored
      	ModuleSP
      	Module::GetSP();
      
      Since we are now using intrusive ref counts, we can easily turn any
      pointer to a module into a shared pointer just by assigning it.
      	
      
      llvm-svn: 139984
      a2eee184
    • Greg Clayton's avatar
      Convert lldb::ModuleSP to use an instrusive ref counted pointer. · 747bcb03
      Greg Clayton authored
      We had some cases where getting the shared pointer for a module from
      the global module list was causing a performance issue when debugging
      with DWARF in .o files. Now that the module uses intrusive ref counts,
      we can easily convert any pointer to a shared pointer.
      
      llvm-svn: 139983
      747bcb03
  5. Sep 15, 2011
  6. Sep 13, 2011
  7. Sep 12, 2011
  8. Sep 11, 2011
  9. Sep 10, 2011
  10. Sep 09, 2011
    • Jim Ingham's avatar
      Move the SourceManager from the Debugger to the Target. That way it can store... · b7f6b2fa
      Jim Ingham authored
      Move the SourceManager from the Debugger to the Target.  That way it can store the per-Target default Source File & Line.
      Set the default Source File & line to main (if it can be found.) at startup.  Selecting the current thread & or frame resets 
      the current source file & line, and "source list" as well as the breakpoint command "break set -l <NUM>" will use the 
      current source file.
      
      llvm-svn: 139323
      b7f6b2fa
  11. Sep 07, 2011
    • Enrico Granata's avatar
      Refactoring of Get() methods in FormatManager/FormatCategory to have... · 855cd901
      Enrico Granata authored
      Refactoring of Get() methods in FormatManager/FormatCategory to have explicative names and return shared-pointers instead of bools
      Reduced the amount of memory required to avoid loops in DumpPrintableRepresentation() from 32 bits down to 1 bit
       - Additionally, disallowed creating summary strings of the form ${var%S} which did nothing but cause endless loops by definition
      
      llvm-svn: 139201
      855cd901
  12. Sep 06, 2011
    • Enrico Granata's avatar
      Redesign of the interaction between Python and frozen objects: · 9128ee2f
      Enrico Granata authored
       - introduced two new classes ValueObjectConstResultChild and ValueObjectConstResultImpl: the first one is a ValueObjectChild obtained from
         a ValueObjectConstResult, the second is a common implementation backend for VOCR and VOCRCh of method calls meant to read through pointers stored
         in frozen objects ; now such reads transparently move from host to target as required
       - as a consequence of the above, removed code that made target-memory copies of expression results in several places throughout LLDB, and also
         removed code that enabled to recognize an expression result VO as such
       - introduced a new GetPointeeData() method in ValueObject that lets you read a given amount of objects of type T from a VO
         representing a T* or T[], and doing dereferences transparently
         in private layer it returns a DataExtractor ; in public layer it returns an instance of a newly created lldb::SBData
       - as GetPointeeData() does the right thing for both frozen and non-frozen ValueObject's, reimplemented ReadPointedString() to use it
         en lieu of doing the raw read itself
       - introduced a new GetData() method in ValueObject that lets you get a copy of the data that backs the ValueObject (for pointers,
         this returns the address without any previous dereferencing steps ; for arrays it actually reads the whole chunk of memory)
         in public layer this returns an SBData, just like GetPointeeData()
       - introduced a new CreateValueFromData() method in SBValue that lets you create a new SBValue from a chunk of data wrapped in an SBData
         the limitation to remember for this kind of SBValue is that they have no address: extracting the address-of for these objects (with any
         of GetAddress(), GetLoadAddress() and AddressOf()) will return invalid values
       - added several tests to check that "p"-ing objects (STL classes, char* and char[]) will do the right thing
      Solved a bug where global pointers to global variables were not dereferenced correctly for display
      New target setting "max-string-summary-length" gives the maximum number of characters to show in a string when summarizing it, instead of the hardcoded 128
      Solved a bug where the summary for char[] and char* would not be shown if the ValueObject's were dumped via the "p" command
      Removed m_pointers_point_to_load_addrs from ValueObject. Introduced a new m_address_type_of_children, which each ValueObject can set to tell the address type
       of any pointers and/or references it creates. In the current codebase, this is load address most of the time (the only notable exception being file
       addresses that generate file address children UNLESS we have a live process)
      Updated help text for summary-string
      Fixed an issue in STL formatters where std::stlcontainer::iterator would match the container's synthetic children providers
      Edited the syntax and help for some commands to have proper argument types
      
      llvm-svn: 139160
      9128ee2f
  13. Sep 02, 2011
  14. Sep 01, 2011
  15. Aug 27, 2011
  16. Aug 25, 2011
  17. Aug 23, 2011
  18. Aug 22, 2011
    • Enrico Granata's avatar
      Code cleanup and refactoring (round 4): · 1d887499
      Enrico Granata authored
       - FormatCategories now are directly mapped by ConstString objects instead of going through
         const char* -> ConstString -> const char*
       - FormatCategory callback does not pass category name anymore. This is not necessary because
         FormatCategory objects themselves hold their name as a member variable
      
      llvm-svn: 138254
      1d887499
    • Enrico Granata's avatar
      - Support for Python namespaces: · def5391a
      Enrico Granata authored
        If you have a Python module foo, in order to use its contained objects in LLDB you do not need to use
        'from foo import *'. You can use 'import foo', and then refer to items in foo as 'foo.bar', and LLDB
        will know how to resolve bar as a member of foo.
        Accordingly, GNU libstdc++ formatters have been moved from the global namespace to gnu_libstdcpp and a few
        test cases are also updated to reflect the new convention. Python docs suggest using a plain 'import' en lieu of
        'from-import'.
      
      llvm-svn: 138244
      def5391a
    • Greg Clayton's avatar
      Added a new plug-in type: lldb_private::OperatingSystem. The operating system · 56d9a1b3
      Greg Clayton authored
      plug-ins are add on plug-ins for the lldb_private::Process class that can add
      thread contexts that are read from memory. It is common in kernels to have
      a lot of threads that are not currently executing on any cores (JTAG debugging
      also follows this sort of thing) and are context switched out whose state is
      stored in memory data structures. Clients can now subclass the OperatingSystem
      plug-ins and then make sure their Create functions correcltly only enable 
      themselves when the right binary/target triple are being debugged. The 
      operating system plug-ins get a chance to attach themselves to processes just
      after launching or attaching and are given a lldb_private::Process object 
      pointer which can be inspected to see if the main executable, target triple,
      or any shared  libraries match a case where the OS plug-in should be used.
      Currently the OS plug-ins can create new threads, define the register contexts
      for these threads (which can all be different if desired), and populate and
      manage the thread info (stop reason, registers in the register context) as
      the debug session goes on.
      
      llvm-svn: 138228
      56d9a1b3
  19. Aug 20, 2011
  20. Aug 19, 2011
    • Enrico Granata's avatar
      - Now using ${var} as the summary for an aggregate type will produce... · d64d0bc0
      Enrico Granata authored
      - Now using ${var} as the summary for an aggregate type will produce "name-of-type @ object-location" instead of giving an error
        e.g. you may get "foo_class @ 0x123456" when typing "type summary add -f ${var} foo_class"
      - Added a new special formatting token %T for summaries. This shows the type of the object.
        Using it, the new "type @ location" summary could be manually generated by writing ${var%T} @ ${var%L}
      - Bits and pieces required to support "frame variable array[n-m]"
        The feature is not enabled yet because some additional design and support code is required, but the basics
        are getting there
      - Fixed a potential issue where a ValueObjectSyntheticFilter was not holding on to its SyntheticChildrenSP
        Because of the way VOSF are being built now, this has never been an actual issue, but it is still sensible for
        a VOSF to hold on to the SyntheticChildrenSP as well as to its FrontEnd
      
      llvm-svn: 138080
      d64d0bc0
    • Enrico Granata's avatar
      Third round of code cleanups: · 02b6676d
      Enrico Granata authored
       - reorganizing the PTS (Partial Template Specializations) in FormatManager.h
       - applied a patch by Filipe Cabecinhas to make LLDB compile with GCC
      Functional changes:
       - fixed an issue where command type summary add for type "struct Foo" would not match any types.
         currently, "struct" will be stripped off and type "Foo" will be matched.
         similar behavior occurs for class, enum and union specifiers.
      
      llvm-svn: 138020
      02b6676d
  21. Aug 18, 2011
    • Enrico Granata's avatar
      Second round of code cleanups: · 85933ed4
      Enrico Granata authored
       - reorganizing classes layout to have public part first
         Typedefs that we want to keep private, but must be defined for some public code to work correctly are an exception
       - avoiding methods in the form T foo() { code; } all on one-line
       - moving method implementations from .h to .cpp whenever feasible
         Templatized code is an exception and so are very small methods
       - generally, adhering to coding conventions followed project-wide
      Functional changes:
       - fixed an issue where using ${var} in a summary for an aggregate, and then displaying a pointer-to-aggregate would lead to no summary being displayed
         The issue was not a major one because all ${var} was meant to do in that context was display an error for invalid use of pointer
         Accordingly fixed test cases and added a new test case
      
      llvm-svn: 137944
      85933ed4
    • Enrico Granata's avatar
      First round of code cleanups: · c482a192
      Enrico Granata authored
       - all instances of "vobj" have been renamed to "valobj"
       - class Debugger::Formatting has been renamed to DataVisualization (defined in FormatManager.h/cpp)
         The interface to this class has not changed
       - FormatCategory now uses ConstString's as keys to the navigators instead of repeatedly casting
         from ConstString to const char* and back all the time
         Next step is making the same happen for categories themselves
       - category gnu-libstdc++ is defined in the constructor for a FormatManager
         The source code for it is defined in gnu_libstdcpp.py, drawn from examples/synthetic at compile time
         All references to previous 'osxcpp' name have been removed from both code and file names
      Functional changes:
       - the name of the option to use a summary string for 'type summary add' has changed from the previous --format-string
         to the new --summary-string. It is expected that the short option will change from -f to -s, and -s for --python-script
         will become -o
      
      llvm-svn: 137886
      c482a192
  22. Aug 17, 2011
    • Enrico Granata's avatar
      New category "gnu-libstdc++" provides summary for std::string and synthetic... · 217f91fc
      Enrico Granata authored
      New category "gnu-libstdc++" provides summary for std::string and synthetic children for types std::map, std::list and std::vector
       The category is enabled by default. If you run into issues with it, disable it and the previous behavior of LLDB is restored
       ** This is a temporary solution. The general solution to having formatters pulled in at startup should involve going through the Platform.
      Fixed an issue in type synthetic list where a category with synthetic providers in it was not shown if all the providers were regex-based
      
      llvm-svn: 137850
      217f91fc
  23. Aug 16, 2011
  24. Aug 15, 2011
Loading