Skip to content
  1. Jul 17, 2012
  2. Aug 10, 2011
    • Greg Clayton's avatar
      While tracking down memory consumption issue a few things were needed: the · 3418c857
      Greg Clayton authored
      ability to dump more information about modules in "target modules list". We
      can now dump the shared pointer reference count for modules, the pointer to
      the module itself (in case performance tools can help track down who has
      references to said pointer), and the modification time.
      
      Added "target delete [target-idx ...]" to be able to delete targets when they
      are no longer needed. This will help track down memory usage issues and help 
      to resolve when module ref counts keep getting incremented. If the command gets
      no arguments, the currently selected target will be deleted. If any arguments 
      are given, they must all be valid target indexes (use the "target list" 
      command to get the current target indexes).
      
      Took care of a bunch of "no newline at end of file" warnings.
      
      TimeValue objects can now dump their time to a lldb_private::Stream object.
      
      Modified the "target modules list --global" command to not error out if there
      are no targets since it doesn't require a target.
      
      Fixed an issue in the MacOSX DYLD dynamic loader plug-in where if a shared 
      library was updated on disk, we would keep using the older one, even if it was
      updated.
      
      Don't allow the ModuleList::GetSharedModule(...) to return an empty module.
      Previously we could specify a valid path on disc to a module, and specify an
      architecture that wasn't contained in that module and get a shared pointer to
      a module that wouldn't be able to return an object file or a symbol file. We
      now make sure an object file can be extracted prior to adding the shared pointer
      to the module to get added to the shared list.
      
      llvm-svn: 137196
      3418c857
  3. Jul 25, 2011
  4. Jul 15, 2011
    • Enrico Granata's avatar
      Python summary strings: · f2bbf717
      Enrico Granata authored
       - you can use a Python script to write a summary string for data-types, in one of
         three ways:
          -P option and typing the script a line at a time
          -s option and passing a one-line Python script
          -F option and passing the name of a Python function
         these options all work for the "type summary add" command
         your Python code (if provided through -P or -s) is wrapped in a function
         that accepts two parameters: valobj (a ValueObject) and dict (an LLDB
         internal dictionary object). if you use -F and give a function name,
         you're expected to define the function on your own and with the right
         prototype. your function, however defined, must return a Python string
       - test case for the Python summary feature
       - a few quirks:
        Python summaries cannot have names, and cannot use regex as type names
        both issues will be fixed ASAP
      major redesign of type summary code:
       - type summary working with strings and type summary working with Python code
         are two classes, with a common base class SummaryFormat
       - SummaryFormat classes now are able to actively format objects rather than
         just aggregating data
       - cleaner code to print descriptions for summaries
      the public API now exports a method to easily navigate a ValueObject hierarchy
      New InputReaderEZ and PriorityPointerPair classes
      Several minor fixes and improvements
      
      llvm-svn: 135238
      f2bbf717
  5. Jun 16, 2011
    • Caroline Tice's avatar
      · d61c10bc
      Caroline Tice authored
      Add 'batch_mode' to CommandInterpreter.  Modify InputReaders to
      not write output (prompts, instructions,etc.) if the CommandInterpreter
      is in batch_mode.
      
      Also, finish updating InputReaders to write to the asynchronous stream,
      rather than using the Debugger's output file directly.
      
      llvm-svn: 133162
      d61c10bc
  6. May 02, 2011
    • Caroline Tice's avatar
      · 969ed3d1
      Caroline Tice authored
      This patch captures and serializes all output being written by the
      command line driver, including the lldb prompt being output by
      editline, the asynchronous process output & error messages, and
      asynchronous messages written by target stop-hooks.
      
      As part of this it introduces a new Stream class,
      StreamAsynchronousIO.  A StreamAsynchronousIO object is created with a
      broadcaster, who will eventually broadcast the stream's data for a
      listener to handle, and an event type indicating what type of event
      the broadcaster will broadcast.  When the Write method is called on a
      StreamAsynchronousIO object, the data is appended to an internal
      string.  When the Flush method is called on a StreamAsynchronousIO
      object, it broadcasts it's data string and clears the string.
      
      Anything in lldb-core that needs to generate asynchronous output for
      the end-user should use the StreamAsynchronousIO objects.
      
      I have also added a new notification type for InputReaders, to let
      them know that a asynchronous output has been written. This is to
      allow the input readers to, for example, refresh their prompts and
      lines, if desired.  I added the case statements to all the input
      readers to catch this notification, but I haven't added any code for
      handling them yet (except to the IOChannel input reader).
      
      llvm-svn: 130721
      969ed3d1
  7. Feb 09, 2011
  8. Nov 19, 2010
  9. Oct 26, 2010
    • Caroline Tice's avatar
      First pass at adding logging capabilities for the API functions. At the moment · ceb6b139
      Caroline Tice authored
      it logs the function calls, their arguments and the return values.  This is not
      complete or polished, but I am committing it now, at the request of someone who
      really wants to use it, even though it's not really done.  It currently does not
      attempt to log all the functions, just the most important ones.  I will be 
      making further adjustments to the API logging code over the next few days/weeks.
      (Suggestions for improvements are welcome).
      
      
      Update the Python build scripts to re-build the swig C++ file whenever 
      the python-extensions.swig file is modified.
      
      Correct the help for 'log enable' command (give it the correct number & type of
      arguments).
      
      llvm-svn: 117349
      ceb6b139
  10. Oct 04, 2010
  11. Jul 14, 2010
  12. Jun 23, 2010
    • Greg Clayton's avatar
      Very large changes that were needed in order to allow multiple connections · 6611103c
      Greg Clayton authored
      to the debugger from GUI windows. Previously there was one global debugger
      instance that could be accessed that had its own command interpreter and
      current state (current target/process/thread/frame). When a GUI debugger
      was attached, if it opened more than one window that each had a console
      window, there were issues where the last one to setup the global debugger
      object won and got control of the debugger.
      
      To avoid this we now create instances of the lldb_private::Debugger that each 
      has its own state:
      - target list for targets the debugger instance owns
      - current process/thread/frame
      - its own command interpreter
      - its own input, output and error file handles to avoid conflicts
      - its own input reader stack
      
      So now clients should call:
      
          SBDebugger::Initialize(); // (static function)
      
          SBDebugger debugger (SBDebugger::Create());
          // Use which ever file handles you wish
          debugger.SetErrorFileHandle (stderr, false);
          debugger.SetOutputFileHandle (stdout, false);
          debugger.SetInputFileHandle (stdin, true);
      
          // main loop
          
          SBDebugger::Terminate(); // (static function)
          
      SBDebugger::Initialize() and SBDebugger::Terminate() are ref counted to
      ensure nothing gets destroyed too early when multiple clients might be
      attached.
      
      Cleaned up the command interpreter and the CommandObject and all subclasses
      to take more appropriate arguments.
      
      llvm-svn: 106615
      6611103c
  13. Jun 08, 2010
Loading