|
1 / 1 / 1
Регистрация: 16.11.2012
Сообщений: 27
|
|||||||||||||||||||||
Компилятор оптимизировал мой код, и я не могу его отладить22.12.2012, 04:43. Показов 1400. Ответов 9
Метки нет (Все метки)
пишу лабу одногруппнице. задание: определить двунаправленный циклический список. элементы типа char*
реализовать функции: 1. проверка на пустоту 2. сколько элементов с одинаковыми соседями? 3. существует ли элемент равный следующему? 4. переставить элементы в обратном порядке между первым и последним вхождениями 5. вывод в файл. для себя добавил функцию create и add ООП не проходили. задание вообще странновато, мы прошли STL, мы не прошли язык Си, то есть никто не знает про strcmp() printf/scanf и т.д. ну это такое. всем известно что 70% времени находимся в универе и 70% инфы находим сами. неважно на одном дыхании написал я вот такой вот говнокод: list.h: (не парился с ifdef ifndef так как опять же раздельную компиляцию нам объяснили абыкак, а подруга объяснить не сможет)
проблем всего три: две мелкие и одна - вообще огонь мелкая: некорректно работает how_many_with_equal_neighbours(list) я как нормальный белый человек поставил точку останова, и давай f10 жать. и тут меня начал есть факт, что нету автоматической слежки за переменными (как ее добавить - первая мелкая проблема) некоторые переменные вообще нельзя отследить: в функции main не могу проследить за list, в функции how_many_with_equal_neighbours(list) не могу проследить за счетчиком i (вторая мелка проблема) ну я себе и думаю: чтото не так с add(). давайте ка глянем в add остановил отладку, поставил останов в add() и компилятор в него не зашел. я поставил останов перед вызовом add, жму f11. та же фигня, пропускает. а потом вижу, всплывает хинт: что-то по типу не могу зайти в функцию, так как я оптимизировал её и кода как такового нету, используйте директиву нескажу какую. в общем это и есть та огонь-проблема. как мне отдебажить эту функцию, как убрать или поставить директиву, чтобы этот компилятор не оптимизировал мой восхитительнейший код? я со своим кодом разобраться вполне могу, хотя советы не помешают, но все же главное - как решить те три проблемы которые я описал? и да, если не лень, гляньте вообще весь код, не только проблемные функции. как можно его еще сократить (я только начал страдать этой фигней, собственно почему я люблю Си - за короткие и непонятные конструкции которые можно объяснять преподам и выглядеть умным) Заранее спасибо Добавлено через 6 минут блин, перечитываю код, уже вижу ошибку в add() code.cpp строка 23 вместо l->next->prev->next=l; //привязываем голову к хвосту надо l->next->prev->next=l->next; //привязываем голову к хвосту Добавлено через 19 минут и еще одна ошибка, строка 59 вместо return l!=tail || strcmp(l->data,l->next->data); надо return l!=tail || !strcmp(l->data,l->next->data); все время забываю что strcmp() действует наоборот Добавлено через 32 минуты в общем я сделал эту функцию так: чуть чуть удлинил. видимо что-то неверно сократил, интересно что. и как убрать эту оптимизацию, на всякий случай расскажите все же. и переменные как наблюдать
как я выяснил в строке 6 никак не хотела выполняться l=l->next удалось проследить за переменной l , но вот же зараза, цикл выполнялся ровно столько раз сколько в списке элементов. ужас какой-то, это я дурак или компилятор?
0
|
|||||||||||||||||||||
| 22.12.2012, 04:43 | |
|
Ответы с готовыми решениями:
9
отладить мой код, пожалуйста На мой взгляд круто оптимизировал сайт Я полностью оптимизировал код |
|
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
|
||
| 22.12.2012, 10:31 | ||
|
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||
| 22.12.2012, 10:59 | |||
|
не хватает у пользователей, которые пытаются в Relise отлаживать (а там уже оптимизатор все перекрутил) вместо Debug Добавлено через 1 минуту интересно что можно отладить в такой строчке
0
|
|||
|
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
|
||||||
| 22.12.2012, 11:14 | ||||||
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
||
| 22.12.2012, 11:48 | ||
|
а если нет? как отлаживать? чему равна l->next->data l->prev->data что вернет strcmp ? для отладки лучше разбить на три строчки и ввести временные переменные
0
|
||
|
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
|
|||||||
| 22.12.2012, 12:15 | |||||||
|
не ну для отладки то да каждое действие по полкам, но потом то собрать надо, проблема то не в отладке была вроде как), а в том что внутри условия оператор
Добавлено через 2 минуты о увидел про голову и хвост
0
|
|||||||
|
|
|||||||||
| 22.12.2012, 16:26 | |||||||||
|
Ну это для отладки, а вообще обычно еще исключения возбуждают при ошибках Добавлено через 5 минут
а не про отладку http://ru.wikipedia.org/wiki/Include_guard
0
|
|||||||||
|
1 / 1 / 1
Регистрация: 16.11.2012
Сообщений: 27
|
|||
| 23.12.2012, 02:37 [ТС] | |||
|
и я знаю что такое watch можете просто подсказать в какой менюшке сделать его автоматическим
0
|
|||
|
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
|
|
| 23.12.2012, 10:25 | |
|
ну погуглите что такое watch я не знаю где вы работаете, в какой среде,и поэтому врятли смогу подсказать, а по сути программы она работает если заменить тем что мы написали вашу конструкцию, все делает
0
|
|
|
1 / 1 / 1
Регистрация: 16.11.2012
Сообщений: 27
|
|
| 24.12.2012, 07:45 [ТС] | |
|
да , я понял что основная проблема что я пытался отлаживать release))
0
|
|
| 24.12.2012, 07:45 | |
|
Помогаю со студенческими работами здесь
10
не могу понять почему не работает мой код
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|