Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
#1

Отладчики - какая от них польза и как ими правильно пользоваться? - C++

15.04.2014, 02:03. Просмотров 410. Ответов 13
Метки нет (Все метки)

Какую пользу несут отладчики и как ими правильно пользоваться? Нет, как его запустить я себе представляю (благо иде помогает), но что я должен там увидеть? Вот у меня падает программа, я запускаю отладчик и вижу такое окно
[]https://www.dropbox.com/s/6t3aus0dbc8eubz/1.png[/]
если нажать f7 то информация изменится
[]https://www.dropbox.com/s/wcryeh74hnyemsl/2.png[/]
Какую полезную информацию я должен увидеть в этих окошках? Как она мне помогает узнать из-за чего падает программа?
Использую стандартный отладчик в Code::Blocks (как я понял это GDB).
Миниатюры
Отладчики - какая от них польза и как ими правильно пользоваться?   Отладчики - какая от них польза и как ими правильно пользоваться?  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 02:03     Отладчики - какая от них польза и как ими правильно пользоваться?
Посмотрите здесь:

Если в нем есть цифра a и b, то определить, какая из них расположена в числе правее C++
C++ Как правильно пользоваться функцией strtok
C++ Две точки заданы своими координатами на плоскости.определить,какая из них находится ближе к началу координат
C++ Какова польза лямбда выражений
Три точки заданы координатами. Определить, какая из них расположена ближе к началу координат C++
Необходимо хранить список типов, и пользоваться ими, например, вызывать конструкторы C++
Как правильно пользоваться typedef для декларации типа указателя на функцию? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vikichocolated
4 / 4 / 0
Регистрация: 14.04.2014
Сообщений: 60
15.04.2014, 02:26     Отладчики - какая от них польза и как ими правильно пользоваться? #2
А какая у Вас среда программирования?

С помощью отладчика мы можем смотреть значение каждой переменной. Если программа компилится, но ответ не верный, то отладчик нам в помощь!
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
15.04.2014, 08:39     Отладчики - какая от них польза и как ими правильно пользоваться? #3
OrmaJever, судя по выводу, программа собрана без отладочной информации. Следовательно, эти окошки пока что ничего полезного не несут. Пересобери с отладкой, ключ -g, и повтори заново.

Цитата Сообщение от vikichocolated Посмотреть сообщение
А какая у Вас среда программирования?
Он жеж написал, что CodeBlocks
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
15.04.2014, 12:29  [ТС]     Отладчики - какая от них польза и как ими правильно пользоваться? #4
Цитата Сообщение от DrOffset Посмотреть сообщение
Следовательно, эти окошки пока что ничего полезного не несут. Пересобери с отладкой, ключ -g, и повтори заново.
но ведь... я же...
Код
g++.exe -Wall  -g  -Weffc++ -std=c++11 -w -Wextra -Wall -DWIN32    -c D:\Dropbox\Sources\C++\_\test\test.cpp -o Debug\test.o
g++.exe  -o Debug\test.exe Debug\test.o   -s -static  "C:\Program Files (x86)\CodeBlocks\MinGW\i686-w64-mingw32\lib\libwsock32.a"
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
15.04.2014, 12:46     Отладчики - какая от них польза и как ими правильно пользоваться? #5
Но ведь же!
Цитата Сообщение от OrmaJever Посмотреть сообщение
g++.exe -o Debug\test.exe Debug\test.o -s
Сначала добавил, потом все удалил

Добавлено через 8 минут
Короче, ключ -s убери - это strip, он удаляет все лишнее из бинарника, в том числе и отладку
Верный признак бинарника с отладкой - раcпухший размер.
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
15.04.2014, 14:21  [ТС]     Отладчики - какая от них польза и как ими правильно пользоваться? #6
Цитата Сообщение от DrOffset Посмотреть сообщение
Сначала добавил, потом все удалил
да да да, давно ещё ставил эту опцию не зная побочных эффектов)) Теперь стало куда понятнее, тыкает на строчку падения и информации стало больше. Спасибо.

Добавлено через 1 час 21 минуту
Что бы не создавать новую тему напишу сюда. Падает на функции realloc.
Я выделил память 6 байт (5 символов и 0х00), затем мне нужно добавить к строке ещё один символ, я пишу так
C++
1
2
3
str = (char *)realloc(str, length+2); // length содержит длину строки без \0, поэтому +2
str[length++] = c;
str[length] = '\0';
программа благополучно падает, и вот здесь у меня непонятки с realloc, после её использования то что было в str должно в ней и остаться? Ведь именно в этом её суть в отличии от malloc?
Вот такой код работает
C++
1
2
3
4
5
    char *newStr = (char *)realloc(str, length+2);
    memcpy(newStr, str, length);
    newStr[length++] = c;
    newStr[length] = '\0';
    str = newStr;
Но ведь зачем тогда realloc если можно снова выделить память и скопировать в неё всё? Или я что-то не так делаю?
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
15.04.2014, 15:33     Отладчики - какая от них польза и как ими правильно пользоваться? #7
OrmaJever, а можно весь код посмотреть тогда? Не похоже, что проблема именно в realloc.
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
15.04.2014, 15:47  [ТС]     Отладчики - какая от них польза и как ими правильно пользоваться? #8
блин, проблема решена, подвёл компилятор! метод описан как
C++
1
string &string::operator<<( const char c )
но я забыл написать return *this и на строке str << 'a' << 'b' второй вызов рушил всё т.к.
Почему компилятор не указал что я забыл return если он явно указан в объявлении метода?
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
15.04.2014, 15:50     Отладчики - какая от них польза и как ими правильно пользоваться? #9
ясно
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
15.04.2014, 16:07     Отладчики - какая от них польза и как ими правильно пользоваться? #10
Цитата Сообщение от OrmaJever Посмотреть сообщение
Почему компилятор не указал что я забыл return если он явно указан в объявлении метода?
Должно было быть предупреждение.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,111
15.04.2014, 16:34     Отладчики - какая от них польза и как ими правильно пользоваться? #11
Если предупреждения нету, можно добавить -Wall как одну из команд для компилятора.
newbie666
Заблокирован
15.04.2014, 16:45     Отладчики - какая от них польза и как ими правильно пользоваться? #12
Пффффффф А как ты софт - то свои запускаешь? Ты что сделал софт, ни разу его не собрав и не протестировав, собрал его сразу в Release и отправил заказчику?

99% запуска софта во время разработки идёт под отладкой
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
15.04.2014, 18:39  [ТС]     Отладчики - какая от них польза и как ими правильно пользоваться? #13
Цитата Сообщение от newbie666 Посмотреть сообщение
собрал его сразу в Release и отправил заказчику?
да, сразу в гугл, майкрософт отсылаю, других же вариантов нету, например писать софт для себя?
Цитата Сообщение от dimcoder Посмотреть сообщение
Если предупреждения нету, можно добавить -Wall как одну из команд для компилятора.
Цитата Сообщение от dimcoder Посмотреть сообщение
Если предупреждения нету, можно добавить -Wall как одну из команд для компилятора.
Только хотел написать что у меня стоял -Wall, но ошибок не было, как сразу вспомнил про -s и пошёл глянуть нет ли чего нибудь ещё лишнего, и сразу обратил внимание на -w (Inhibit all warning message), убрав которые варнинги появились. Ключи для компилятора страшное дело, я думал от них только польза
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 19:03     Отладчики - какая от них польза и как ими правильно пользоваться?
Еще ссылки по теме:

C++ Даны две площади треугольников, узнать какая из них больше и во сколько раз
Найти суммы чисел из двух диапазонов и определить какая из них меньше C++
как правильно пользоваться C++
Как вручную ввести полные имена файлов что бы потом считать/записать информацию с них/на них? C++
C++ Как в C++ правильно пользоваться полиморфизмом?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
15.04.2014, 19:03     Отладчики - какая от них польза и как ими правильно пользоваться? #14
Цитата Сообщение от OrmaJever Посмотреть сообщение
Ключи для компилятора страшное дело, я думал от них только польза
Конечно польза. От молотка тоже польза, но и по пальцам можно заехать. Это я к тому, что всякий инструмент требует изучения
Yandex
Объявления
15.04.2014, 19:03     Отладчики - какая от них польза и как ими правильно пользоваться?
Ответ Создать тему
Опции темы

Текущее время: 21:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru