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
_______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
