Attached. But this doesn't work with global variables and I haven't had chance 
to look at it.

Subject: Re: [lldb-dev] Formatter for std::shared_ptr<std::wstring>
From: [email protected]
Date: Wed, 8 Aug 2012 09:48:34 -0700
CC: [email protected]; [email protected]
To: [email protected]

Alexander,feel free to share your script if you desire.I can work on 
integrating it into mainline LLDB.
Thanks!

Enrico Granata✉ egranata@.com✆ (408) 972-7683


On Aug 7, 2012, at 8:41 PM, Alexander Angriawan <[email protected]> wrote:





Hi,
 
I got it working.  
I follow example from the following to navigate and Nino's script to read the 
char.
http://llvm.org/svn/llvm-project/lldb/trunk/examples/synthetic/libcxx.py
I can post the script if needed.
thanks,PA

 
Subject: Re: [lldb-dev] Formatter for std::shared_ptr<std::wstring>
From: [email protected]
Date: Mon, 6 Aug 2012 11:54:51 -0700
CC: [email protected]; [email protected]
To: [email protected]

Alexander is using libcpp, part of the LLVM project, whereas you are using 
libstdcpp (a GNU project).They both implement the C++ Standard Library but with 
different internals!Luckily they are easy to differentiate because libcpp 
classes lived in a std::__1 namespace


Enrico Granata egranata@.com✆ (408) 972-7683


On Aug 6, 2012, at 11:52 AM, Nino Kettlitz <[email protected]> wrote:
  
    
  
  
    Hi Alexander,

      

      your string implementation looks very complicated.

      

      Also the type of the string looks strange. I would expect that
      "std::wstring" is a typedef

      for "std::basic_string<wchar_t,
      std::char_traits<wchar_t>, std::allocator<wchar_t>"

      

      You are using "std::__1::wstring" and the real type also contains
      this "__1" stuff

      "std::__1::basic_string<wchar_t,
      std::__1::char_traits<wchar_t>,
      std::__1::allocator<wchar_t>>"

      and it is additionally wrapped by a std::pair or sth similar. 

      

      I've never seen this before. Maybe somebody else in the mailing
      list did?!

      

      So the wstring.py data formater works only for std::wstring with a
      "_M_dataplus" and a "_M_p" member

      

      Cheers,

      Nino

      

      

      

      

      Am 06.08.2012 19:47, schrieb Alexander Angriawan:

    
    
      
      I am using Mac OS X Version 10.7.4
        The following is the lldb
            output:
        (lldb) frame
              variable x(std::__1::wstring) x = {  __r_ = {   
            
std::__1::__libcpp_compressed_pair_imp<std::__1::basic_string<wchar_t,
            std::__1::char_traits<wchar_t>,
            std::__1::allocator<wchar_t> >::__rep,
            std::__1::allocator<wchar_t> > = {      __first_ = {         = {    
      __l = {            __cap_ = 17            __size_ = 12            __data_ 
= 0x00000001001009c0          }          __s = {             = {              
__size_ = '\x11'              _ = \x11\0\0\0            }            __data_ = 
{              [0] = \0\0\0\0              [1] = \f\0\0\0              [2] = 
\0\0\0\0              [3] = \xc0\t\x10\0              [4] = \x01\0\0\0          
  }          }          __r = {            __words = {              [0] = 17    
          [1] = 12              [2] = 4296018368            }          }        
}      }    }  }}(lldb) 
        
        

        
        Thanks,
        PA
        

          
            Date: Mon, 6 Aug 2012 11:24:48 +0200

            From: [email protected]

            To: [email protected]

            Subject: Re: [lldb-dev] Formatter for
            std::shared_ptr<std::wstring>

            

            Hmm, thats strange.

              

              I'm currently using not the latest lldb, so maybe
              something changed.

              

              What platform are you developing on? The script is written
              for osx.

              

              Maybe you can just send me the output of "frame variable
              x" without having the script installed. Maybe the
              structure of your strings differ.

              

              

              N. 

              

              Am 06.08.12 10:54, schrieb Alexander Angriawan:

            
            
              
              Thank you
                  Nino.
                

                  
                  Unfortunately the script
                      doesn't work in my environment.
                  GetByteSize() always return
                      0 in my case.
                  

                    
                  ....
                  
                                if
                        _M_p_data.GetByteSize() == 1:
                                    _M_p_deref
                        = _M_p_data.GetUnsignedInt8(e, 0)    # utf-8
                                elif
                        _M_p_data.GetByteSize() == 2:
                                    _M_p_deref
                        = _M_p_data.GetUnsignedInt16(e, 0)   # utf-16
                                elif
                        _M_p_data.GetByteSize() == 4:
                                    _M_p_deref
                        = _M_p_data.GetSignedInt32(e, 0)     # utf-32
                                else:
                                  
                         _M_p_deref = -1
                                
                                if _M_p_deref
                        <= 0:
                                 break
                  
                  ----
                  

                  
                  My
                    simple test code:
                  

                  
                  int
                      main(int argc, const char
                      * argv[]){    std::wstring x = L"fooo";   
                      return 0;}
                  
                  

                  
                  ---
                  JA
                  

                  
                  

                  
                  

                  
                  

                  
                  

                    
                      Date: Mon, 6 Aug 2012
                      09:54:09 +0200

                      From: [email protected]

                      To: [email protected]

                      CC: [email protected]

                      Subject: Re: [lldb-dev] Formatter for
                      std::shared_ptr<std::wstring>

                      

                      Oh,

                        

                        I've seen, that the script attached to the mail
                        is not on the server, so I attached it again,
                        although it would be better to have it in the
                        lldb svn.

                        

                        Yust copy the script to your hom directory and
                        ad the folowing line to your .lldbinit

                        

                        script sys.path[:0] = [os.path.expanduser('~')]

                        command alias pwd script print os.getcwd()

                        script import wstring

                        type summary add --python-function
                        wstring.wstring_summary "std::wstring"

                        type summary add --python-function
                        wstring.wstring_summary
                        "std::basic_string<int, class
                        std::char_traits<int>, class
                        std::allocator<int> >"

                        type summary add --python-function
                        wstring.wstring_summary
                        "std::basic_string<unsigned short, class
                        std::char_traits<unsigned short>, class
                        std::allocator<unsigned short> >"

                        type summary add --python-function
                        wstring.wstring_summary
                        "std::basic_string<wchar_t, class
                        std::char_traits<wchar_t>, class
                        std::allocator<wchar_t> >"

                        

                        

                        Cheers, Nino

                        

                        Am 06.08.12 09:19, schrieb Alexander Angriawan:

                      
                      
                        
                        
                          Hello,
                          

                            
                          I am looking to
                              write data formatter for
                              std::shared_ptr<std::wstring>.
                          

                            
                          I found the
                              following old article but this doesn't
                              seem to work.
                          I have ver 159
                              installed.
                          
http://lists.cs.uiuc.edu/pipermail/lldb-dev/2012-February/000825.html
                          

                            
                          Any idea?
                          

                          
                          Thank you much,
                          PA
                        
                        

                        
                        

                        _______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

                      
                      

                    
                  
                
              
            
            

          
        
      
    
    

  

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev


                                          

                                          

Attachment: formatter.bin
Description: Binary data

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to