Hi,
Apologies if this is the wrong forum for this question - redirection to the correct place would be appreciated…
I am running
lldb --version
lldb-900.0.64
Swift-4.0
with binaries compiled using g++
g+±5 --version
g+±5 (Homebrew GCC 5.5.0_2) 5.5.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.(although I have tried a build from repo as well)
The website implies that gcc std library formatters should be available:
By default, several categories are created in LLDB:
-
default
: this is the category where every formatter ends up, unless another category is specified -
objc
: formatters for basic and common Objective-C types that do not specifically depend on Mac OS X -
gnu-libstdc++
: formatters for std::string, std::vector, std::list and std::map as implemented by libstdcpp
However I see:
(lldb) type category list Category: default (enabled)
Category: VectorTypes (enabled, applicable for language(s): objective-c++)
Category: runtime-synthetics (enabled, applicable for language(s): objective-c++, swift)
Category: system (enabled, applicable for language(s): objective-c++)
(lldb) type category enable gnu-libstdc++ warning: empty category enabled (typo?)
And the std containers do not print nicely:
containerTest: cat main.cpp
#include
#include
using namespace std;
int main()
{
auto v = vector< unsigned >{ 0, 1, 2, 3, 4, 5, 6, 7, 9 };
for( auto i : v )
{
cout << i << “\n”;
}
return( 0 );
}
containerTest: g+±5 -g -std=c++11 main.cpp
/var/folders/2_/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:157:11: warning: section “__textcoal_nt” is deprecated
.section _TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
/var/folders/2/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:157:11: note: change section name to “__text”
.section _TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
/var/folders/2/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:386:11: warning: section “__textcoal_nt” is deprecated
.section _TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
/var/folders/2/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:386:11: note: change section name to “__text”
.section _TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
/var/folders/2/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:430:11: warning: section “__textcoal_nt” is deprecated
.section _TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
/var/folders/2/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:430:11: note: change section name to “__text”
.section _TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
/var/folders/2/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:683:11: warning: section “__textcoal_nt” is deprecated
.section _TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
/var/folders/2/07xjgwq904376gst9m3ddb100000gn/T//cctjpiwL.s:683:11: note: change section name to “__text”
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
containerTest: lldb ./a.out
(lldb) target create “./a.out”
Current executable set to ‘./a.out’ (x86_64).
(lldb) b main
Breakpoint 1: where = a.out`main + 13 at main.cpp:8, address = 0x0000000100001673
(lldb) run
Process 98294 launched: ‘./a.out’ (x86_64)
Process 98294 stopped
- thread #1, queue = ‘com.apple.main-thread’, stop reason = breakpoint 1.1
frame #0: 0x0000000100001673 a.out`main at main.cpp:8
5
6 int main()
7 {
→ 8 auto v = vector< unsigned >{ 0, 1, 2, 3, 4, 5, 6, 7, 9 };
9
10 for( auto i : v )
11 {
Target 0: (a.out) stopped.
(lldb) n
Process 98294 stopped - thread #1, queue = ‘com.apple.main-thread’, stop reason = step over
frame #0: 0x00000001000016bd a.out`main at main.cpp:10
7 {
8 auto v = vector< unsigned >{ 0, 1, 2, 3, 4, 5, 6, 7, 9 };
9
→ 10 for( auto i : v )
11 {
12 cout << i << “\n”;
13 }
Target 0: (a.out) stopped.
(lldb) p v
(vector<unsigned int, allocator >) $0 = {
_Vector_base<unsigned int, allocator > = {
_M_impl = {
_M_start = 0x0000000100402050
_M_finish = 0x0000000100402074
_M_end_of_storage = 0x0000000100402074
}
}
}
(lldb)
Anyone able to point me at either a python pretty printer or solution to this?
Cheers, Bryan.