Skip to content
  1. Apr 02, 2012
  2. Mar 31, 2012
  3. Mar 30, 2012
  4. Mar 29, 2012
    • Enrico Granata's avatar
      Part 1 of a series of fixes meant to improve reliability and increase ease of... · d50f18b1
      Enrico Granata authored
      Part 1 of a series of fixes meant to improve reliability and increase ease of bug fixing for data formatter issues.
      We are introducing a new Logger class on the Python side. This has the same purpose, but is unrelated, to the C++ logging facility
      The Pythonic logging can be enabled by using the following scripting commands:
      (lldb) script Logger._lldb_formatters_debug_level = {0,1,2,...}
      0 = no logging
      1 = do log
      2 = flush after logging each line - slower but safer
      3 or more = each time a Logger is constructed, log the function that has created it
      more log levels may be added, each one being more log-active than the previous
      by default, the log output will come out on your screen, to direct it to a file:
      (lldb) script Logger._lldb_formatters_debug_filename = 'filename'
      that will make the output go to the file - set to None to disable the file output and get screen logging back
      Logging has been enabled for the C++ STL formatters and for Cocoa class NSData - more logging will follow
      
      
      synthetic children providers for classes list and map (both libstdcpp and libcxx) now have internal capping for safety reasons
      this will fix crashers where a malformed list or map would not ever meet our termination conditions
      
      to set the cap to a different value:
      
      (lldb) script {gnu_libstdcpp|libcxx}.{map|list}_capping_size = new_cap (by default, it is 255)
      
      you can optionally disable the loop detection algorithm for lists
      
      (lldb) script {gnu_libstdcpp|libcxx}.list_uses_loop_detector = False
      
      llvm-svn: 153676
      d50f18b1
    • Greg Clayton's avatar
      When running this from the command line, don't pass the python script file... · 6ca75a00
      Greg Clayton authored
      When running this from the command line, don't pass the python script file itself to be disassembled.
      
      llvm-svn: 153626
      6ca75a00
    • Enrico Granata's avatar
      Fixing an issue where Unicode characters in an NSString were printed as escape... · 86ea8d82
      Enrico Granata authored
      Fixing an issue where Unicode characters in an NSString were printed as escape sequences by the summary provider shipping with LLDB - Added relevant test case code. Bonus points for identifying the source of the quotes :-)
      
      llvm-svn: 153624
      86ea8d82
  5. Mar 28, 2012
  6. Mar 27, 2012
    • Enrico Granata's avatar
      adding a summary for Objective-C type 'Class' · bf70ee97
      Enrico Granata authored
      llvm-svn: 153541
      bf70ee97
    • Enrico Granata's avatar
      Synthetic values are now automatically enabled and active by default. SBValue... · c5bc412c
      Enrico Granata authored
      Synthetic values are now automatically enabled and active by default. SBValue is set up to always wrap a synthetic value when one is available.
      A new setting enable-synthetic-value is provided on the target to disable this behavior.
      There also is a new GetNonSyntheticValue() API call on SBValue to go back from synthetic to non-synthetic. There is no call to go from non-synthetic to synthetic.
      The test suite has been changed accordingly.
      Fallout from changes to type searching: an hack has to be played to make it possible to use maps that contain std::string due to the special name replacement operated by clang
      Fixing a test case that was using libstdcpp instead of libc++ - caught as a consequence of said changes to type searching
      
      llvm-svn: 153495
      c5bc412c
  7. Mar 23, 2012
  8. Mar 20, 2012
    • Greg Clayton's avatar
      Added a fix to the crash log script that allows you to locate and load a... · 2b1bc868
      Greg Clayton authored
      Added a fix to the crash log script that allows you to locate and load a binary from any location and _then_ do the symbolication. Something like:
      
      (lldb) file /path/to/file.so
      (lldb) crashlog crash.log
      ....
      
      Then if the file.so has already been loaded it will use the one that is already in LLDB without trying to match up the paths.
      
      llvm-svn: 153075
      2b1bc868
  9. Mar 19, 2012
    • Enrico Granata's avatar
      Massive enumeration name changes: a number of enums in ValueObject were not... · 86cc9829
      Enrico Granata authored
      Massive enumeration name changes: a number of enums in ValueObject were not following the naming pattern
      Changes to synthetic children:
       - the update(self): function can now (optionally) return a value - if it returns boolean value True, ValueObjectSyntheticFilter will not clear its caches across stop-points
         this should allow better performance for Python-based synthetic children when one can be sure that the child ValueObjects have not changed
       - making a difference between a synthetic VO and a VO with a synthetic value: now a ValueObjectSyntheticFilter will not return itself as its own synthetic value, but will (correctly)
         claim to itself be synthetic
       - cleared up the internal synthetic children architecture to make a more consistent use of pointers and references instead of shared pointers when possible
       - major cleanup of unnecessary #include, data and functions in ValueObjectSyntheticFilter itself
       - removed the SyntheticValueType enum and replaced it with a plain boolean (to which it was equivalent in the first place)
      Some clean ups to the summary generation code
      Centralized the code that clears out user-visible strings and data in ValueObject
      More efficient summaries for libc++ containers
      
      llvm-svn: 153061
      86cc9829
  10. Mar 17, 2012
  11. Mar 16, 2012
  12. Mar 13, 2012
    • Enrico Granata's avatar
      The Cocoa formatters now provide error messages for many of the common... · 3f1052b7
      Enrico Granata authored
      The Cocoa formatters now provide error messages for many of the common things-went-wrong situations. Previously they would say nothing or log failures to the Python console
      
      llvm-svn: 152673
      3f1052b7
    • Enrico Granata's avatar
      Changed several of the Cocoa formatters to match the output style that Xcode... · 8c69c96d
      Enrico Granata authored
      Changed several of the Cocoa formatters to match the output style that Xcode uses internally to provide summaries
      This has been done for those summaries where the difference is only cosmetic (e.g. naming things as items instead of values, ...)
      The LLDB output style has been preserved when it provides more information (e.g. telling the type as well as the value of an NSNumber)
      
      Test cases have been updated to reflect the updated output style where necessary
      
      llvm-svn: 152592
      8c69c96d
  13. Mar 12, 2012
    • Enrico Granata's avatar
      Added formatters for libc++ (http://libcxx.llvm.org): · c7f87306
      Enrico Granata authored
       std::string has a summary provider
       std::vector std::list and std::map have both a summary and a synthetic children provider
      Given the usage of a custom namespace (std::__1::classname) for the implementation of libc++, we keep both libstdcpp and libc++ formatters enabled at the same time since that raises no conflicts and enabled for seamless transition between the two
      The formatters for libc++ reside in a libcxx category, and are loaded from libcxx.py (to be found in examples/synthetic)
      
      The formatters-stl test cases have been divided to be separate for libcxx and libstdcpp. This separation is necessary because
       (a) we need different compiler flags for libc++ than for libstdcpp
       (b) libc++ inlines a lot more than libstdcpp and some code changes were required to accommodate this difference
      
      llvm-svn: 152570
      c7f87306
  14. Mar 09, 2012
  15. Mar 07, 2012
  16. Mar 05, 2012
    • Enrico Granata's avatar
      Several performance-oriented changes to the introspecting data formatters: · cfdafa37
      Enrico Granata authored
       (a) the SystemParameters object is now passed around to the formatters; doing so enables the formatters to reuse computed values for things such as pointer-size and endianness
           instead of repeatedly computing these on their own
       (b) replacing the global ISA cache with a per-process one
       (c) providing a per-process types cache where each formatter can store the types it needs to operate, and be sure to find them the next time without recalculating them
           this also enables formatters to share types if they agree on a local naming convention
       (d) lazy fetching of data from Objective-C runtime data structures
           data is fetched as needed and we stop reading as soon as we determine that an ISA is actually garbage
      
      llvm-svn: 152052
      cfdafa37
  17. Mar 03, 2012
    • Enrico Granata's avatar
      added a new formatter for CF(Mutable)BitVector · 385ad4e4
      Enrico Granata authored
      fixed a few potential NULL-pointer derefs in ValueObject
      we have a way to provide docstrings for properties we add to the SWIG layer - a few of these properties have a docstring already, more will come in future commits
      added a new bunch of properties to SBData to make it more natural and Python-like to access the data they contain
      
      llvm-svn: 151962
      385ad4e4
  18. Mar 02, 2012
  19. Mar 01, 2012
    • Enrico Granata's avatar
      this fixes unicode strings handling in 32-bit mode on Lion · 74ec8f9c
      Enrico Granata authored
      llvm-svn: 151831
      74ec8f9c
    • Enrico Granata's avatar
      (a) adding an introspection formatter for NS(Mutable)IndexSet · 896cd1d3
      Enrico Granata authored
      (b) fixes and improvements to the formatters for NSDate and NSString
      (c) adding an introspection formatter for NSCountedSet
      (d) making the Objective-C formatters test cases pass on both 64 and 32 bit
          one of the test cases is marked as expected failure on i386 - support needs to be added to the LLDB core for it to pass
      
      llvm-svn: 151826
      896cd1d3
    • Jim Ingham's avatar
      Add an option to sort by packet count (rather than time). Also print the count, · d95752f2
      Jim Ingham authored
      and to print the total count & time in the header.
      
      llvm-svn: 151823
      d95752f2
    • Enrico Granata's avatar
      1) solving a bug where, after Jim's fixes to stack frames, synthetic children... · 0c489f58
      Enrico Granata authored
      1) solving a bug where, after Jim's fixes to stack frames, synthetic children were not recalculated when necessary, causing them to get out of sync with live data
      2) providing an updated list of tagged pointers values for the objc_runtime module - hopefully this one is final
      3) changing ValueObject::DumpValueObject to use an Options class instead of providing a bulky list of parameters to pass around
         this change had been laid out previously, but some clients of DumpValueObject() were still using the old prototype and some arguments
         were treated in a special way and passed in directly instead of through the Options class
      4) providing new GetSummaryAsCString() and GetValueAsCString() calls in ValueObject that are passed a formatter object and a destination string
         and fill the string by formatting themselves using the formatter argument instead of the default for the current ValueObject
      5) removing the option to have formats and summaries stick to a variable for the current stoppoint
         after some debate, we are going with non-sticky: if you say frame variable --format hex foo, the hex format will only be applied to the current command execution and not stick when redisplaying foo
         the other option would be full stickiness, which means that foo would be formatted as hex for its whole lifetime
         we are open to suggestions on what feels "natural" in this regard
      
      llvm-svn: 151801
      0c489f58
  20. Feb 29, 2012
    • Enrico Granata's avatar
    • Enrico Granata's avatar
      This commit: · 7bc0ec3a
      Enrico Granata authored
       a) adds a Python summary provider for NSDate
       b) changes the initialization for ScriptInterpreter so that we are not passing a bulk of Python-specific function pointers around
       c) provides a new ScriptInterpreterObject class that allows for ref-count safe wrapping of scripting objects on the C++ side
       d) contains much needed performance improvements:
          1) the pointer to the Python function generating a scripted summary is now cached instead of looked up every time
          2) redundant memory reads in the Python ObjC runtime wrapper are eliminated
          3) summaries now use the m_summary_str in ValueObject to store their data instead of passing around ( == copying) an std::string object
       e) contains other minor fixes, such as adding descriptive error messages for some cases of summary generation failure
      
      llvm-svn: 151703
      7bc0ec3a
  21. Feb 24, 2012
    • Enrico Granata's avatar
    • Greg Clayton's avatar
      <rdar://problem/10103468> · e72dfb32
      Greg Clayton authored
      I started work on being able to add symbol files after a debug session
      had started with a new "target symfile add" command and quickly ran into
      problems with stale Address objects in breakpoint locations that had 
      lldb_private::Section pointers into modules that had been removed or 
      replaced. This also let to grabbing stale modules from those sections. 
      So I needed to thread harded the Address, Section and related objects.
      
      To do this I modified the ModuleChild class to now require a ModuleSP
      on initialization so that a weak reference can created. I also changed
      all places that were handing out "Section *" to have them hand out SectionSP.
      All ObjectFile, SymbolFile and SymbolVendors were inheriting from ModuleChild
      so all of the find plug-in, static creation function and constructors now
      require ModuleSP references instead of Module *. 
      
      Address objects now have weak references to their sections which can
      safely go stale when a module gets destructed. 
      
      This checkin doesn't complete the "target symfile add" command, but it
      does get us a lot clioser to being able to do such things without a high
      risk of crashing or memory corruption.
      
      llvm-svn: 151336
      e72dfb32
    • Enrico Granata's avatar
      fixing a syntax error with objc_runtime.py · b8cbe9cb
      Enrico Granata authored
      llvm-svn: 151304
      b8cbe9cb
    • Enrico Granata's avatar
      This patch provides a set of formatters for most of the commonly used Cocoa classes. · eb4a4798
      Enrico Granata authored
      The formatter for NSString is an improved version of the one previously shipped as an example, the others are new in design and implementation.
      A more robust and OO-compliant Objective-C runtime wrapper is provided for runtime versions 1 and 2 on 32 and 64 bit.
      The formatters are contained in a category named "AppKit", which is not enabled at startup.
      
      llvm-svn: 151300
      eb4a4798
  22. Feb 22, 2012
  23. Feb 21, 2012
Loading