Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Необходимо хранить список типов, и пользоваться ими, например, вызывать конструкторы - C++
Здравствуйте! Мне необходимо хранить список типов, и пользоваться ими, например, вызывать конструкторы. Я нашел вариант решения...

как правильно пользоваться - C++
Здравствуйте, нашел интересный код для интересной задачи (Удалить комментарии из файла), но как сделать так,чтобы программа брала input.txt...

Как в C++ правильно пользоваться полиморфизмом? - C++
Объясните пожалуйста как правильно пользоваться полиморфизмом в плюсах. Задача такая - есть некий абстрактный класс с виртуальными...

Как правильно пользоваться функцией strtok - C++
Как правильно пользоваться етой ф-цией? Набросал код, надо пока разбить строку на слова(ф-ция int lek). #include <iostream> #include...

Как правильно пользоваться typedef для декларации типа указателя на функцию? - C++
Мне нужны будут функции, принимающие параметр-указатель на функции с одним и тем же списком параметров и возвращаемым типом. Как правильно...

Ресурсы проекта. Как ими пользоваться? - C++ Builder
Я создал файл 1.html, записал его в папку проекта, создал файл 1.rc и записал туда имя_ресурса тип_ресурса имя_файла: MYHTML HTMLFILE...

13
vikichocolated
4 / 4 / 0
Регистрация: 14.04.2014
Сообщений: 60
15.04.2014, 02:26 #2
А какая у Вас среда программирования?

С помощью отладчика мы можем смотреть значение каждой переменной. Если программа компилится, но ответ не верный, то отладчик нам в помощь!
0
DrOffset
7387 / 4464 / 1013
Регистрация: 30.01.2014
Сообщений: 7,319
15.04.2014, 08:39 #3
OrmaJever, судя по выводу, программа собрана без отладочной информации. Следовательно, эти окошки пока что ничего полезного не несут. Пересобери с отладкой, ключ -g, и повтори заново.

Цитата Сообщение от vikichocolated Посмотреть сообщение
А какая у Вас среда программирования?
Он жеж написал, что CodeBlocks
0
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"
0
DrOffset
7387 / 4464 / 1013
Регистрация: 30.01.2014
Сообщений: 7,319
15.04.2014, 12:46 #5
Но ведь же!
Цитата Сообщение от OrmaJever Посмотреть сообщение
g++.exe -o Debug\test.exe Debug\test.o -s
Сначала добавил, потом все удалил

Добавлено через 8 минут
Короче, ключ -s убери - это strip, он удаляет все лишнее из бинарника, в том числе и отладку
Верный признак бинарника с отладкой - раcпухший размер.
1
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 если можно снова выделить память и скопировать в неё всё? Или я что-то не так делаю?
0
DrOffset
7387 / 4464 / 1013
Регистрация: 30.01.2014
Сообщений: 7,319
15.04.2014, 15:33 #7
OrmaJever, а можно весь код посмотреть тогда? Не похоже, что проблема именно в realloc.
0
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 если он явно указан в объявлении метода?
0
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
15.04.2014, 15:50 #9
ясно
0
DrOffset
7387 / 4464 / 1013
Регистрация: 30.01.2014
Сообщений: 7,319
15.04.2014, 16:07 #10
Цитата Сообщение от OrmaJever Посмотреть сообщение
Почему компилятор не указал что я забыл return если он явно указан в объявлении метода?
Должно было быть предупреждение.
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,141
15.04.2014, 16:34 #11
Если предупреждения нету, можно добавить -Wall как одну из команд для компилятора.
0
newbie666
Заблокирован
15.04.2014, 16:45 #12
Пффффффф А как ты софт - то свои запускаешь? Ты что сделал софт, ни разу его не собрав и не протестировав, собрал его сразу в Release и отправил заказчику?

99% запуска софта во время разработки идёт под отладкой
0
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), убрав которые варнинги появились. Ключи для компилятора страшное дело, я думал от них только польза
0
DrOffset
7387 / 4464 / 1013
Регистрация: 30.01.2014
Сообщений: 7,319
15.04.2014, 19:03 #14
Цитата Сообщение от OrmaJever Посмотреть сообщение
Ключи для компилятора страшное дело, я думал от них только польза
Конечно польза. От молотка тоже польза, но и по пальцам можно заехать. Это я к тому, что всякий инструмент требует изучения
0
15.04.2014, 19:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 19:03
Привет! Вот еще темы с ответами:

Где хранятся настройки и как ими пользоваться? - C#
В Visual Studio есть такая примочка - встроенные настройки приложения. Пытаюсь разобраться как ее использовать для начала мне очень...

Где лежат библиотеки четвёртой версии OpenOffice и как ими пользоваться? - C#
Вообщем, где лежат библиотеки четвёртой версии OpenOffice, как их подключить и как с ними работать

Польза указателей и потребновсть в них - Delphi
Помогите,пож-ста,начинаю изучать С++ и хочу понять: 1. для чего все-таки полезны указатели и можно ли без них обойтись? 2.Говорят, что...

Для чего вообще нужен полиморфизм. Какая польза от наследования - C#
Здравствуйте всем. Кто зашел в эту ветку форума. Вопрос такой. Есть ООП и один из трех столпов - полиморфизм. Суть полиморфизма ясна и для...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.