2009-09-03 1 views
6

Я ищу IDE Linux с поддержкой отладки STL.Linux IDE с надлежащей поддержкой отладки STL

проблема заключается в том, что с Eclipse CDT, если я осмотреть вектор после push_back:

int main() { 
vector<string> v; 
v.push_back("blah"); 
return 0; 
} 

я получаю что-то враждебное, как

{<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x1fee040, _M_finish = 0x1fee048, _M_end_of_storage = 0x1fee048}}, <No data fields>} 

вместо чего-то вроде

vector["blah"] 

или что-то подобное. Есть ли альтернативный IDE/Debugger для Linux, который обеспечивает лучшую поддержку STL?

ответ

5

QtCreator имеет отбойные самосвалы для контейнеров Qt, некоторые контейнеры STL и кучу классов Qt. Это также более отзывчиво, чем Eclipse.

См. Qt Creator debugger dumpers.

+0

интересный, загружающий, чтобы проверить его. –

+1

с использованием QTC 1.2.1 с вышеуказанным кодом (без каких-либо компонентов QT), я до сих пор получаю классический дрянной векторный дисплей. –

+0

Возможно, что самосвалы не построены. Откройте «Инструменты»> «Параметры»> «Qt»> «Qt Versions» и выберите версию Qt. Посмотрите, помечен ли помощник отладки как сборка (зеленая галочка), и если не пытайтесь ее перестроить. Если все в порядке, при запуске GDB вы получите сообщение «X-отладчики-помощники загружены» в информационной панели отладчика. – rpg

0

Это не имеет ничего общего с IDE как таковым, но это недостаток отладчика, который вы используете. IDE, особенно в Linux, являются только интерфейсами для отладчиков. Я полагаю, вы используете GDB, и это не улучшится. BTW, развиваясь в Linux, я использую тщательно отложенные операторы печати вместо отладчика, и большую часть времени я считаю это лучше, чем использование отладчика!

0

Eclipse использует gdb, и вы можете использовать скрипт gdb, чтобы он печатал разные типы так, как вы хотите. Я использую свои собственные скрипты для своих собственных типов, но есть много доступных скриптов для stl.

Теперь сложной частью будет сделать эту работу гладко Eclipse, но это может быть решение.

+0

Я знаю некоторые сценарии, которые улучшают поддержку gdb для stl, но я получаю полное решение. Как вы сказали, эти скрипты не интегрируются хорошо с любой IDE. –

1

Просто вопрос сценария GDB, чтобы вы могли печатать контейнеры stl. Для печати вектор:

define pvec 
    set $vec = ($arg0) 
    set $vec_size = $vec->_M_impl->_M_finish - $vec->_M_impl->_M_start 
    if ($vec_size != 0) 
     set $i = 0 
     while ($i < $vec_size) 

      printf "Vector Element %d: ", $i 

      p *($vec->_M_impl->_M_start+$i) 

      set $i++ 

     end 
    end 
end 

Теперь вы можете даже сценарий его на питона. Проверьте документацию.

Я лично использую cgdb, который является очень удобным отладчиком проклятий.

 Смежные вопросы

  • Нет связанных вопросов^_^