Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > debug


Автор: sergioK1 10.5.2011, 01:34
Чем удобнее дебажить ? gdb или при помощи IDE и какой?
Наверно есть в поиске но Я не нашел 

Автор: MAKCim 10.5.2011, 10:50
удобно - понятие субъективное

Автор: null56 10.5.2011, 13:59
если чисто дебагер, то ddd неплох, хорошая обертка 
http://www.gnu.org/software/ddd/
а так большинство IDE поддерживают удобные обертки для отладки, тот же eclipse... 
хотя тебе уже дали хороший ответ
Цитата(MAKCim @  10.5.2011,  10:50 Найти цитируемый пост)
удобно - понятие субъективное 


Автор: sergioK1 10.5.2011, 16:24
Цитата(null56 @ 10.5.2011,  12:59)
а так большинство IDE поддерживают удобные обертки для отладки, тот же eclipse... 

В есlipse как раз не работает,  игнорирует break-points и все  гуглил но ничего рядом не нашел , 
с DDD буду разбираться ,


2 MAKCim - бумаги не жалко для таких ответов ? 







Автор: xvr 11.5.2011, 11:10
В Linux есть ровно один дебагер - gdb. Все остальное - разные обвертки над ним. Так что рекомендуется с самим gdb хотя бы ознакомится, а потом искать удобный GUI (если понадобится после знакомства с gdb  smile )

Кстати, даже в самом консольном gdb могут быть зачатки GUI (то же консольного)
Смотри TUI в info gdb

Автор: 500mhz 11.5.2011, 12:45
не совсем так, есть еще linice

user posted image

Автор: xvr 11.5.2011, 16:44
Цитата(500mhz @  11.5.2011,  12:45 Найти цитируемый пост)
не совсем так, есть еще linice

Это кернельный дебагер, у него несколько 'не та' сфера применения, что у gdb  smile 
Кернельные в Linux'е еще есть - kdb например

Автор: 500mhz 11.5.2011, 18:00
не ну я это понимаю, но я за справедливость)

Автор: MAKCim 11.5.2011, 21:23
Цитата(sergioK1 @  10.5.2011,  16:24 Найти цитируемый пост)
2 MAKCim - бумаги не жалко для таких ответов ? 

ответ аналогичен вопросу

Автор: bsa 12.5.2011, 12:34
Цитата(sergioK1 @  10.5.2011,  16:24 Найти цитируемый пост)
В есlipse как раз не работает,  игнорирует break-points и все  гуглил но ничего рядом не нашел , 
с DDD буду разбираться ,

скорее всего, ты собрал прогу без отладочной информации (в режиме release).

Автор: sergioK1 12.5.2011, 16:23
Цитата(bsa @ 12.5.2011,  11:34)
Цитата(sergioK1 @  10.5.2011,  16:24 Найти цитируемый пост)
В есlipse как раз не работает,  игнорирует break-points и все  гуглил но ничего рядом не нашел , 
с DDD буду разбираться ,

скорее всего, ты собрал прогу без отладочной информации (в режиме release).

В смысле ? flag -g не выставил, запускал в debug mode, оно как-бы понятно что выставить нужно
но если это дебаг мод то что выставлять и куда  ? 

Автор: bsa 13.5.2011, 12:14
sergioK1, так флаг -g и отличает отладочную от неотладочной. Добавь две опции компилятора -O0 -g3, пересобери проект и все у тебя будет отлаживаться.

Автор: sergioK1 13.5.2011, 12:54
заработало проблема была в настройках IDE.
методом научного тыка нашел , в perspectives должен стоят promt а был never 






Автор: bsa 13.5.2011, 13:02
sergioK1, зря ты собрал отладочную версию с третьей оптимизацией. Тебя ждет очень много неожиданных сюрпризов.

Автор: sergioK1 13.5.2011, 17:57
Цитата(bsa @ 13.5.2011,  12:02)
sergioK1, зря ты собрал отладочную версию с третьей оптимизацией. Тебя ждет очень много неожиданных сюрпризов.

И как знать какой уровень оптимизации нужен , ? методом проб и ошибок ? или есть какая-то система ?



Автор: boostcoder 13.5.2011, 18:01
для отладочной версии включать оптимизацию?! smile 

Автор: sergioK1 13.5.2011, 18:17
Цитата(boostcoder @ 13.5.2011,  17:01)
для отладочной версии включать оптимизацию?! smile

для релизной естесно, хотя вопрос не этом ,
есть какая нидь система пусть не на 100% вот тут  при таких ситуациях ставим 2 тут 3 тут не ставим , 
может best practise есть ?

или надо тыкать на авось  smile 
что будь внятное можно услышать  - общие соображения Я сам знаю  smile 

Автор: bsa 13.5.2011, 20:34
sergioK1, в документации это описано.
-O0 - без оптимизации (для отладки)
-O1 и -Os - оптимизация по размеру (ну если тебе не так важна скорость, как размер)
-O2 - оптимизация по скорости (обычно используется в релизах)
-O3 - супер оптимизация по скорости. Может вызывать проблемы, поэтому используется редко.

Автор: xvr 13.5.2011, 20:52
Цитата(sergioK1 @  13.5.2011,  17:57 Найти цитируемый пост)
или есть какая-то система ?

Есть - если хочешь отлаживать свою программу, а не оптимизатор компилятора, то оптимизации нужно выключать  smile 

Автор: kamre 17.5.2011, 13:40
А какая IDE в линуксе умеет нормально отображать при отладке контейнеры/итераторы из STL? Чтобы как в MSVC можно было и в data tip посмотреть по быстрому и в отдельной панели Watch поисследовать.

Автор: bsa 17.5.2011, 16:24
kamre, Qt Creator

Добавлено через 47 секунд
Главное, убедиться, что собраны помощники отладчика (для старых версий актуально).

Автор: kamre 17.5.2011, 17:02
Цитата(bsa @ 17.5.2011,  16:24)
kamre, Qt Creator
Главное, убедиться, что собраны помощники отладчика (для старых версий актуально).

Не работает в QtCreator 2.2:
user posted image

Автор: bsa 17.5.2011, 18:29
kamre, у меня проблем нет. Попробуй перед return добавить вывод одного элемента на консоль. Возможно, компилятор что-то соптимизировал.

Автор: sergioK1 17.5.2011, 21:43
Цитата(kamre @ 17.5.2011,  12:40)
А какая IDE в линуксе умеет нормально отображать при отладке контейнеры/итераторы из STL? Чтобы как в MSVC можно было и в data tip посмотреть по быстрому и в отдельной панели Watch поисследовать.

Eclipse  все отлично показывает ,
Сreator тоже , хотя смотреть в дебаге контайнер  - мартышкин труд  smile 

Автор: kamre 17.5.2011, 21:59
Цитата(sergioK1 @ 17.5.2011,  21:43)
Цитата(kamre @ 17.5.2011,  12:40)
А какая IDE в линуксе умеет нормально отображать при отладке контейнеры/итераторы из STL? Чтобы как в MSVC можно было и в data tip посмотреть по быстрому и в отдельной панели Watch поисследовать.

Eclipse  все отлично показывает ,

Ну уж так откровенно то https://bugs.eclipse.org/bugs/show_bug.cgi?id=302121 не стоит.

Автор: sergioK1 17.5.2011, 22:47
Цитата(kamre @ 17.5.2011,  20:59)
Цитата(sergioK1 @ 17.5.2011,  21:43)
Цитата(kamre @ 17.5.2011,  12:40)
А какая IDE в линуксе умеет нормально отображать при отладке контейнеры/итераторы из STL? Чтобы как в MSVC можно было и в data tip посмотреть по быстрому и в отдельной панели Watch поисследовать.

Eclipse  все отлично показывает ,

Ну уж так откровенно то https://bugs.eclipse.org/bugs/show_bug.cgi?id=302121 не стоит.


Я не очень понимаю о чем там речь 
У меня  20 минут назад работало,   

Автор: kamre 17.5.2011, 23:02
Цитата(sergioK1 @ 17.5.2011,  22:47)
Я не очень понимаю о чем там речь 
У меня  20 минут назад работало,

Ну тогда скриншот что ли покажите для того кода выше, как показываются переменные m и i в отладчике CDT?

Автор: sergioK1 17.5.2011, 23:33
Цитата(kamre @ 17.5.2011,  22:02)
Цитата(sergioK1 @ 17.5.2011,  22:47)
Я не очень понимаю о чем там речь 
У меня  20 минут назад работало,

Ну тогда скриншот что ли покажите для того кода выше, как показываются переменные m и i в отладчике CDT?

Код напишете  полностью Я уже стер , и машину закрыл,  посмотрю,
поставте Эклипсе посмотрите - это быстрее будет, и займет минут 20 ,

P.S .
Вот поэтому Я и говорю что С надежней, а в меня гнилые яблоки кидают smile ,







Автор: kamre 18.5.2011, 11:25
Цитата(sergioK1 @ 17.5.2011,  23:33)
Код напишете  полностью Я уже стер , и машину закрыл,  посмотрю,
поставте Эклипсе посмотрите - это быстрее будет, и займет минут 20 ,

Код полностью:
Код

#include <map>
#include <list>
#include <string>
using namespace std;

int main()
{
    typedef map<string, list<string> > map_t;
    map_t m;
    m["one"].push_back("a");
    m["one"].push_back("b");
    m["one"].push_back("c");
    m["two"].push_back("1");
    m["two"].push_back("2");
    m["two"].push_back("3");
    map_t::const_iterator i = m.begin();
    i++;
    return 0; // <= break point on this line
}


В MSVC в data tip показывается все очень удобно и компактно:
Код

[-] m[2]("one",[3]("a","b","c")),("two",[3]("1","2","3")))
 [+] [0] ("one",[3]("a","b","c"))
 [+] [1] ("two",[3]("1","2","3"))


Как такое посмотреть в CDT? Насколько я знаю - никак, не реализовали еще.

P.S. и в QtCreator у меня тоже упорно не хочет ничего показывать....

Автор: bsa 18.5.2011, 11:30
Цитата(kamre @  18.5.2011,  11:25 Найти цитируемый пост)
P.S. и в QtCreator у меня тоже упорно не хочет ничего показывать.... 

Проверь состояние помощников отладчика в настройках в разделе Qt4

Автор: kamre 18.5.2011, 12:44
Цитата(bsa @ 18.5.2011,  11:30)
Проверь состояние помощников отладчика в настройках в разделе Qt4

В QtCreator 2.2:
Цитата

 GDB Helper: Not needed.

Автор: bsa 18.5.2011, 13:14
kamre, добавь cout и выведи один из элементов мэпа. Возможно, оптимизатор компилятора выкинул лишнее.

Автор: kamre 18.5.2011, 13:38
Цитата(bsa @ 18.5.2011,  13:14)
kamre, добавь cout и выведи один из элементов мэпа. Возможно, оптимизатор компилятора выкинул лишнее.

Добавил
Код

  cout << i->first << endl;


перед

Код

return 0;


Ничего не поменялось. Да и сборка же debug делается, специально для отладки.

Автор: bsa 18.5.2011, 13:43
kamre, какой у тебя gdb? Обычно, "unavailable synchronous data" выдается после освобождения участка памяти, на который ссылается объект.

Автор: xvr 18.5.2011, 15:05
Дебагер в VS не обладает 'встроенными' знаниями о том, что надо показывать для stl контейнеров. Эти 'знания' у него лежат в отдельном файле ( C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\autoexp.dat )

Не уверен, что gdb такое умеет (пока)  smile 

Автор: bsa 22.5.2011, 22:34
В Qt Creator используются дамперы (ныне на питоне), которые эту проблему и решают.

Автор: sergioK1 24.5.2011, 17:23
Цитата(bsa @ 22.5.2011,  21:34)
В Qt Creator используются дамперы (ныне на питоне), которые эту проблему и решают.

какая разница на питоне или на гадюке  smile 
куда эти самые дамперы  вставлять ? 

Автор: bsa 24.5.2011, 23:49
Никуда. Они должны работать "из коробки". У меня на 3-х машинах (Ubuntu 11.04 x86_64) работают.

Автор: sergioK1 25.5.2011, 10:20
Цитата(bsa @ 24.5.2011,  22:49)
Никуда. Они должны работать "из коробки". У меня на 3-х машинах (Ubuntu 11.04 x86_64) работают.


в таких случаях говорят  Ай гот лост,  smile 

Чел спросил про то как дебагить STL . под линукс оно не работает, под мелкософт да, потому что там есть отдельный файл,
меня оно тоже заинтересовало,
ты сказал что в линуксе есть дамперы на Питоне, ну и ???????
ты думаешь от того бы об этом сказал оно(дебаг стал работать )  smile 

Автор: bsa 25.5.2011, 13:50
Цитата(sergioK1 @  25.5.2011,  10:20 Найти цитируемый пост)
Чел спросил про то как дебагить STL . под линукс оно не работает, под мелкософт да, потому что там есть отдельный файл,
меня оно тоже заинтересовало,
ты сказал что в линуксе есть дамперы на Питоне, ну и ???????
ты думаешь от того бы об этом сказал оно(дебаг стал работать )

То что я это сказал, можно расценить как "неполадки в конкретном случае конкретного человека". И надо разбираться с этим отдельно.
И не надо тут троллить. Твое отношение к С++ и STL, как неотъемлемой его части, уже давно известно.

Автор: spyswamp 2.11.2011, 11:59
Подниму, пожалуй, данную тему.

У меня установлена ОС Windows 7, QtCreator 2.3.0 (based on Qt 4.7.4 32 bit). Поставилось все это вместе с QtSDK-win. Проблема проявляется в том, что в дебаге не могу смотреть значения переменных-"коллекций". Например, QHash, QVector и других подобных структур.

Гуглил, даже в jira разработчиков сказано, что такое должно быть исправлено. Gdb, судя по всему, последней версии (если верить components.xml) - 7.2.0-4.

Дома на Ubuntu 10.04.3 LTS + QtCreator 1.3.1 (based on Qt 4.6.2) все показывается идеально.

Кто может подсказать, в чем дело?

Добавлено через 2 минуты и 22 секунды
Хм, только сейчас увидел, что топик в программировании под *nix. Удалите, пожалуйста, эти дописки, я сейчас создам тему в соответствующем разделе.

Автор: Amp 2.11.2011, 13:01
Цитата(xvr @  18.5.2011,  15:05 Найти цитируемый пост)
Не уверен, что gdb такое умеет (пока)  smile 

Да умеет он это все. Называется "pretty printers" - такие небольшие скриптики на питоне. В интернетах можно найти в т.ч. для qt и wx контейнеров. Как написали выше, для stl-контейнеров они должны идти "искаропки". Их отсутствие наверное лежит на совести мейнтейнеров.

Другое дело, что связка gdb + IDE частенько не работает smile Как несколько лет назад с этим сталкивался, так и сейчас. На примере все того же Creator. Это раздражает.

Автор: spyswamp 2.11.2011, 15:36
Amp, а ты не нашел способа решения проблемы? У меня, судя по всему, как раз такая неработающая связка на винде попалась.

Автор: Amp 2.11.2011, 16:31
spyswamp, там от случая к случаю проблемы разные. У меня, например, в линупсе не работает, а в виндовс все хорошо. Т.к. работа не связана с этим, то я и забил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)