llvm帶來很多很多好用的東西,比如clang,還有一個STL實現:libcxx.其優點不表,就說怎么打印STL容器內的元素吧.
實際上gdb,包括任何調試工具,都是不了解STL的,因為他不知道STL內部是怎么實現的.所以需要展示STL內部元素的時候,就需要用到一些腳本,或者插件之類的(VS也是這樣).gdb在7.x支持python寫插件,所以很多人都用python插件來打印libstdc++容器內的元素.
llvm官方本身沒有實現pretty printers,包括lldb這個項目也一樣(只是實現了部分容器的parser).
本來還想講講怎么實現一個容器的parser,不過想想其實很簡單了,看着sample很快就學會了.
不賣關子了,這邊給出llvm libcxx基本上所有容器的pretty printer,https://github.com/egmkang/pretty_printer_for_libcxx/
暫時不支持vector<bool>和bitset,如果有需要的話,知會一聲,我去寫.
寫的時候參考了:
