[libcxx]用gdb打印libcxx容器內的內容


  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,如果有需要的話,知會一聲,我去寫.

  寫的時候參考了:

  http://tromey.com/blog/?p=524

  http://tromey.com/blog/?p=546

  https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/debuggingprettyprinters.html

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM