Malý problém. Nikdy mě to moc netrápilo, ale dneska jsem ladil nějaký kód, kde byla data uložena jen ve vektorech a těžko se z nich tahala ven a problém mě začal trochu pálit. Po chvilce googlení jsem se dostal na tuto stránku: http://www.yolinux.com/TUTORIALS/GDB-Commands.html
Jde o velice pěkné shrnutí příkazů pro GDB(samozřejmě funkčních i v DDD), ale ukazuje i jak se vypořádat se zapeklitostí STL. Stačí použít tento skriptík pro GDB http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt (lze nakopírovat do ~/.gdbinit nebo natáhnout přímo z GDB příkazem source) a všechny STL kontejnery jsou najednou krásně dostupné. Příklady použití jsou dostupné přes odkaz výše. Pro pořádek jen stručný přehled příkazů pro výpis jednotlivých kontejnerů:
std::vector<T> -- via pvector command std::list<T> -- via plist or plist_member command std::map<T,T> -- via pmap or pmap_member command std::multimap<T,T> -- via pmap or pmap_member command std::set<T> -- via pset command std::multiset<T> -- via pset command std::deque<T> -- via pdequeue command std::stack<T> -- via pstack command std::queue<T> -- via pqueue command std::priority_queue<T> -- via ppqueue command std::bitset<n> -- via pbitset command std::string -- via pstring command std::widestring -- via pwstring command
Myslím, že to určitě někomu může přijít vhod. Pokud někdo znáte lepší způsob, nezapomeňte se pochlubit v diskuzi.
AFAIK nejlepsi nastroj na debugovani je Qt Creator. Pri prekladu vytvori malou knihovnu (libgdbmacros), kterou natahne do gdb. S ni umi zobrazit obsah STL/Qt kontejneru.
Zatim jedinou nevyhodu co znam je, ze nejde nastavit, pro ktere knihovny se maji nacitat symboly (pro kod velikosti v radu ~3-4M LOC to je na zabrane pameti celkem znat; v 0.9.1 to jeste slo pres ~/.gdbinit).
Autor je absolventem FIT VUT v Brně. Aktivně se zajímá o GNU/Linux, Open Source Software a vše ostatní s tímto související.