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::wstringx = L"fooo";

    return0;

    }


    ---
    JA





    ------------------------------------------------------------------------
    Date: Mon, 6 Aug 2012 09:54:09 +0200
    From: [email protected]
    <mailto:[email protected]>
    To: [email protected] <mailto:[email protected]>
    CC: [email protected] <mailto:[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]  <mailto:[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

Reply via email to