Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/70: Рейтинг темы: голосов - 70, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 62

Отладка кода (программы) во FreeBasic

21.02.2024, 01:11. Показов 15391. Ответов 224

Студворк — интернет-сервис помощи студентам
Уважаемые программисты. Подскажите - как производится наладка отладка (не редактирование) программы (кода) во FreeBasic.
В QB это делалось просто. В меню Debug командой toggle breakpoint метится строка до которой проверить.
После запуска идет проверка, отмечаются ошибки, проблемы.
У меня во FreeBasic этот метод не работает. Программа на метку не реагирует, действия не совершаются. Прошу помощи.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2024, 01:11
Ответы с готовыми решениями:

Компиляция программы Qbasic в Freebasic
По мере надобности компиляции одной из старых программ, написанных давным давно в Qbasic, установил Freebasic (OS Ubuntu). Пытаюсь...

Грамотная отладка программы, подмога в структуризации кода
Сразу прошу прощения, если ошибся разделом. Написал программу. Она простая. Она сжимает выбранную папку в zip и кладёт куда нужно. ...

Отладка программы в Delphi(нужно подредактировать текст чужой программы)
Взял у одногруппника похожую, на свою программу, нужно переделать под свое задание. А я сам чайник, и не могу понять, что там лишнее, а...

224
 Аватар для CoderHuligan
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 56
24.02.2024, 15:46
Студворк — интернет-сервис помощи студентам
А почему нельзя просто запилить хотя бы текстовую оболочку как в quick basic, turbo pascal, где дебаггер из коробки и ОЧЕНЬ удобен? Ну хотя бы вот это сделать. Ну ведь умели же когда-то так делать, чтобы просто и удобно.. Только под винду, линукс и мак. Вот хотя бы то что было в dos. Зачем навороченные, вот это ХОТЯ бы сделать..
0
Эксперт по электронике
6497 / 3127 / 331
Регистрация: 28.10.2011
Сообщений: 12,292
Записей в блоге: 7
24.02.2024, 16:28
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Если человек плохо именует переменные - да, проблемы будут. У меня проблем никогда не было
Ни разу не опечатались при наборе кода?
Отсутствие обязательной декларации переменных позволяет создавать их на лету и случайная опечатка может привести к трудно уловимой ошибке, особенно если нет отладчика.
0
 Аватар для CoderHuligan
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 56
24.02.2024, 17:36
Цитата Сообщение от CoderHuligan Посмотреть сообщение
как в quick basic, turbo pascal
Во free pascal это сделано по типу как это было в turbo, который был написан благодаря библиотеке turbo vision. А в visual basic дебаггер просто божественнен.))
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.02.2024, 19:12
Цитата Сообщение от locm Посмотреть сообщение
Ни разу не опечатались при наборе кода?
Опечатывался в первые годы, когда начинал, но быстро понял что надо использовать копипаст
для имён любых сущностей проги. И меня дико радует софт, который по даблклику выделяет слово
без всяких пробелов, просто слово.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,255
Записей в блоге: 4
24.02.2024, 19:57
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Зарезервированную в программе
память респечатаю, почему нет?
Для этого нужно код писать.
А в отладчике навёл мышку на переменную — и её значение отобразилось во всплывающей подсказке. Не надо выдумывать никаких принтов и шаблонов для отладки. В отладчик принт уже встроен для любой переменной и памяти.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Стек вызовов мне не нужен, я же написал
что каждую деталь алгоритма завожу и проверяю отдельно, и не вижу смысла делать как-то по другому.
Это хорошо когда функция вызывается только из одного места. А если функция вызывается из двух мест? Тут надо понять откуда именно. Значит, стек вызовов нужен.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
компилируя через BAT-ник, это тоже довольно быстро будет
Если файл исходного кода изменился, значит его нужно перекомпилировать. При этом перекомпилировать другие файлы не нужно, так как они не изменялись. Нет смысла гонять процессор вхолостую. Пакетный файл умеет определять какие файлы нужно перекомпилировать а какие нет?
Цитата Сообщение от Quiet Snow Посмотреть сообщение
при том что расшаривал реально много переменных
В многопоточных и асинхронных программах тоже сработало?
1
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.02.2024, 20:28
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Только под винду, линукс и мак.
Твои аппетиты бесценны))) для мака надо купить мак, а ты знаешь сколько он стоит? Поинтересуйся
и закатай губцы.

Текстовый - это, имхо, пустая трата времени. Если бы пилил редактор(а в этом направлении
пытаюсь вести работу, условий нет - но пытаюсь), то положил бы большой и толстенный х** на отладчик.
Это вообще не главное. Потому что суть как раз в IDE в хорошей, удобной, расширяемой, а не в отладчике.

Суть в том чтобы первоначально иметь хотя бы ASCII редактор и минимальный набор хелперов.
А для этого нужна рабочая сетка типа как в элементе Scintilla.
Можно делать через жопу, как сделана "кубик логика" в примерах GL2D, я неоднократно приводил этот позор в пример,
а можно по-другому, полностью математико-логически формализовать, чем как раз и занимаюсь.
Это не единая логика, в ней много составляющих, которые не идут последовательно и которые
влияют на архитектуру движка. И вот чтобы весь процесс в движке сделать оптимальным,
нужно формализовывать, подстраивая под архитектуру, это является максимально трудоёмкой вещью
т.е. это вклинивание одновременно нескольких архитектур между собой. Там не всё так однозначно
как может показаться и 100% не поканает вид: "логика отдельно, отрисовка отдельно". И дело не в том,
что я не могу это разделить, а в том, что операций будет больше необходимого и это уже будет не формализация,
а лёгкий налёт говнокодинга, хочется хорошо и это совсем другой разговор.

Повторюсь для гибкого, расширяемого редактора, плавающего, с автоматической вёрсткой, когда
ты растягиваешь и таскаешь окно.
При этом нужно иметь шрифт, хороший, кастомный(у меня он практически есть, провёл огромную
работу в этом направлении, руками попиксельно рисовал с DOSBox-ового), на разные разрешения включая 4k.
И всё это дело должно быть в дальнейшем рассчитано в т.ч. на возможность перехода на Unicode.
Т.е. структуры должны быть рассчитаны(для шрифта в данном ключе можно использовать FreeType).
Плюс конечно нужен концепт интерфейса. И он также у меня есть, как гибрид между QB4 и TurboPascal.



По итогу у нас должно быть:
-API сетки (создание, обновление, конвертирование пиксель-кубик позиций, получение свойств, ограничители)
-API текстовых структур (структуры документа, работа с кастом строками, буфер обмена)
-Графические API (загрузка и вывод текста, прорисовка окон, галочек, скроллов, полей)
-API интерфейса(логика UI)
-Сам движок(в принципе это простая вещь, если на базовом делать, прототипы показывал в примерах по FB)

На самом деле, в лоб "на отвали" нельзя скодить только один из этих этапов, это API текстовых сруктур.
Потому что тогда будут явные проблемы с самим редактором. Всё остальное говнокодится в лоб,
с последствиями разумеется. Но смысл имеет делать хороший редактор, с фикс сеткой - будет говно,
мы потеряем как минимум возможность реал тайм масштабирования текста между готовыми вариантами,
и растягивание окна. Да я знаю это можно заговнокодить через сдвиговые операнды, и вместо пары формул
в коде у нас будет страшная лютая захардкоденная дичь. В вышеупомянутых частях подсветка синтаксиса
включается в API текстовых структур. Это я очень сильно упрощённо прошёлся по некоторым аспектам.
На самом деле все эти элементы кодил, по отдельности оно работало, но качество кода меня не устроило,
поэтому было решено проектировать заново с учётом косяков.
2
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 62
24.02.2024, 20:53  [ТС]
CoderHuligan

Если ответ и для меня, я про свои проблемы сообщил в 18 сообщении. Увы, очень мало знаний и объективный напряг по стратегии времени.

Добавлено через 7 минут
Если ответ и для меня, я свои проблемы описал в сообщении 18. Увы, знаний очень мало, времени на изучение всех программных возможностей и возможностей различных инструментов тоже.
0
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.02.2024, 20:59
Цитата Сообщение от Замабувараев Посмотреть сообщение
В многопоточных и асинхронных программах тоже сработало?
Работало, но там я это делал по минимуму. Т.к. синхронизация сильно усложняется,
проще было передавать параметром указатель.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Пакетный файл умеет определять какие файлы нужно перекомпилировать а какие нет?
Да всё руками там делается без проблем. При острой необходимости пилится самописная утилитка,
с выбором компилируемого модуля. Ну и да я не так часто рекомпилирую, чтобы мне даже 2 или 3 секунды
было проблемно ждать. Можно автоматизировать, но зачем? Когда и так всё хорошо.
Вон у Стаса его Window9 да, там она больше минуты компилится. Но там и рассчитано, что можно тестить
и отдельно функции в модулях.

Цитата Сообщение от Замабувараев Посмотреть сообщение
А если функция вызывается из двух мест? Тут надо понять откуда именно. Значит, стек вызовов нужен.
Значит перед вызовом функции нужно делать логирование в файл.
Для разных людей, боящихся за жёсткий диск можно это делать на RAM диске через тот же ImDisk.
А есть ещё жёще вариант, прикинь CASE логика из пол сотни состояний, состояния постоянно меняются
и зависят от кода внутри этих состояний. Как ты такое будешь отлаживать? Полагаю никак))) Я бы просто
в мусорку код выкинул, будь там хоть один даже мелкий баг, если не ясно откуда он берётся.
Опять же, только грамотное продумывание всех частей алгоритма может избавить от проблем.

Цитата Сообщение от Замабувараев Посмотреть сообщение
А в отладчике навёл мышку на переменную — и её значение отобразилось во всплывающей подсказке.
Это для переменных, а когда там многоуровневая UDT - не верю, что оно нормально сможет отобразить.
Потому что в таких случаях не всегда достаточно видеть 1 элемент, часто нужно видеть несколько элементов,
причём опять же если мы отлаживаем такие структуры и действия в них это не должна быть готовая программа,
т.е. не проверив запихать и потом трахаться, это всё проверяется после каждой операции над этой структурой.
Выходит если человек и не сойдёт с ума, делая все эти действия через отладчик, то времени он явно потратит
существенно больше. Ну т.е. он в любом случае при баге потратит дофига времени. Лучше это время потратить
за письменным столом чем потом пытаться понять где и чего не пашет.

Добавлено через 5 минут
Цитата Сообщение от volchv Посмотреть сообщение
я свои проблемы описал в сообщении 18.
Цитата Сообщение от volchv Посмотреть сообщение
Но звук, не прокатил, графика ограниченно.
Это не проблемы. Это так мелочи:
Графика для чего? 2D - стандартной GfxLib(встроенная в FB) пользуйся, 3D - OpenGL пример недавно
человек выложил в закреплённую тему.
Звук. Опять же для чего? Если простенько - FBSound. Подключить и юзать - несложно, возможностей
там много, даже CALLBACK на буфер есть. Посложнее - mme, по примерам самостоятельно можно осилить.
Ещё была библиотека SQUALL по звуку, у Стаса можешь спросить, на новых компилях не знаю работает или нет,
на старых тестил - работало отлично.
1
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 62
24.02.2024, 21:24  [ТС]
Quiet Snow

"Это не проблемы. Это так мелочи:
Графика для чего? 2D - стандартной GfxLib(встроенная в FB) пользуйся, 3D - OpenGL пример недавно
человек выложил в закреплённую тему.
Звук. Опять же для чего? Если простенько - FBSound. Подключить и юзать - несложно, возможностей
там много, даже CALLBACK на буфер есть. Посложнее - mme, по примерам самостоятельно можно осилить.
Ещё была библиотека SQUALL по звуку, у Стаса можешь спросить, на новых компилях не знаю работает или нет,
на старых тестил - работало отлично."

Графика для 3D- геометрическая математика. Количественно не сложно, геометрически - объёмная структура при рассмотрении под разными углами, при поворотах для обзора в глубину. В 2D справляюсь.
Звук попробовал, не решает то что нужно. В виде простейшей синусоиды - противный результат, в узком диапазоне. предполагал - иметь возможность вытащить звуковые формы из программных синтезаторов, из звуковой карты, но, по видимому кроме штатных нот оттуда нужные мне наборы, комбинации, ряды звуков не взять. (вопросы задавал - не прояснили) Звуки нужны по заданнай числовой величине. Строго.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,255
Записей в блоге: 4
24.02.2024, 21:33
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Значит перед вызовом функции нужно делать логирование в файл.
Это всё делается средствами отладчика. Менять исходный код программы, перекомпилировать, вставлять и удалять отладочный мусор не надо.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
а когда там многоуровневая UDT - не верю, что оно нормально сможет отобразить
Работает:
Миниатюры
Отладка кода (программы) во FreeBasic  
1
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.02.2024, 23:06
Цитата Сообщение от Замабувараев Посмотреть сообщение
Работает:
С таким интерфейсом связываться бы точно не стал. Про то и писал, что оно не ориентировано на задачу, а
просто вываливает тебе кучу гавна и мол разгребай как хочешь.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Менять исходный код программы, перекомпилировать, вставлять и удалять отладочный мусор не надо.
Именно так, надо просто сесть и написать без ошибок, не за компом. И ты знаешь что я прав, что никакой
отладчик тебе не поможет, если ты лажанёшь в алгоритме. Но я не против, лажай и потом трать время на отладку)))

Добавлено через 16 минут
Цитата Сообщение от volchv Посмотреть сообщение
Графика для 3D- геометрическая математика. Количественно не сложно, геометрически - объёмная структура при рассмотрении под разными углами, при поворотах для обзора в глубину. В 2D справляюсь.
Звук попробовал, не решает то что нужно. В виде простейшей синусоиды - противный результат, в узком диапазоне. предполагал - иметь возможность вытащить звуковые формы из программных синтезаторов, из звуковой карты, но, по видимому кроме штатных нот оттуда нужные мне наборы, комбинации, ряды звуков не взять. (вопросы задавал - не прояснили) Звуки нужны по заданнай числовой величине. Строго.
Это описание мало чего объясняет.
FBSound - воспроизводит любой семпл, в т.ч. с ресемплингом(без интерполяции).
Его хватит, если цель не писать свой секвенсор.
По 3D - настраиваешь OpenGL, камера статична, вращаешь мир вокруг камеры с помощью обычной
тригонометрии, 9 классов школы надо. Элементарщину можно сохранять в .obj файл на Blender.
И парсить на FB, это вроде текстовый файл. Уроков по Blender - миллионы в сети.

Не знаю чё ты там мутишь, раз не конкретизируешь. Ну информация есть по этим вопросам.
Звуки можно достать либо из VSTi синтезаторов, либо из семплов(есть семплер KONTAKT, к нему
много реалистично звучащих библиотек муз. инструментов)
Вот есть ещё беспл. софтина для создания звуковых эффектов: https://www.bfxr.net
1
Эксперт по электронике
6497 / 3127 / 331
Регистрация: 28.10.2011
Сообщений: 12,292
Записей в блоге: 7
24.02.2024, 23:33
Цитата Сообщение от Quiet Snow Посмотреть сообщение
для мака надо купить мак
Можно запустить в виртуалке.
Правда не уверен сработает ли это с MacOS для ARM процессоров. А для x86-x64 работает.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Значит перед вызовом функции нужно делать логирование в файл.
И потом анализировать десятки метров лога (функций много и могут очень часто вызываться)? Не лучше в требуемый момент открыть окно отладчика с последовательностью вызовов функций и посмотреть что и откуда вызывалось? Проще, удобнее и быстрее.
Старый подход с принтами и логом это хорошо, но он использовался из-за недостатка ресурсов компов тех лет, а не потому что удобен.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
А есть ещё жёще вариант, прикинь CASE логика из пол сотни состояний, состояния постоянно меняются
и зависят от кода внутри этих состояний. Как ты такое будешь отлаживать?
Можно пошагово если вообще непонятно где ошибка или ставить точки останова в требуемых местах.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это для переменных, а когда там многоуровневая UDT - не верю, что оно нормально сможет отобразить.
Покажу пример на PB как это может выглядеть.
Название: Debug_1.png
Просмотров: 120

Размер: 3.6 Кб
1
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
25.02.2024, 00:52
Цитата Сообщение от locm Посмотреть сообщение
И потом анализировать десятки метров лога (функций много и могут очень часто вызываться)?
Логи до сих пор применяют, в сложных и тяжеленных движках. Но речь не об этом.
Можно просто увидеть баг и выйти из программы или её саму вышибет, что даже лучше, последние данные лога
будут актуальными. И кстати не факт, что они помогут.
А фишка в том, что этот самый требуемый момент это неизвестная величина, и тем паче неизвестная
если внезапно окажется, что алгоритм неправилен изначально. Т.е. откуда отладчик поймёт, что надо остановить,
и самое главное где и по каким критериям, представь у тебя толстая прога, гоняющая сотни мегабайт,
и баг, появляющийся случайно. Брекпоинт не поможет вообще никак. Причём баг может быть не технический,
а в самом алгоритме и допустим исправляемый, т.е. формально прямых признаков ошибки выполнения функций
не будет. И ищи свищи...

Цитата Сообщение от locm Посмотреть сообщение
Можно запустить в виртуалке.
Правда не уверен сработает ли это с MacOS для ARM процессоров. А для x86-x64 работает.
Слышал про хакинтоши. Но для них нужен жёсткий диск с лицензионным маком ну и понимать как это делать.
Т.е. всё таки купить какой-нибудь старый мак, вытащить оттуда хард, сделать копию харда чтобы не просрать ОС,
и потом уже возиться по инструкциям. Можно но как-то слабо хочется этим заниматься. И есть один нюанс, я
не уверен что FB для мака есть, т.е. если писать код на FB, которого нет для мака.

Цитата Сообщение от locm Посмотреть сообщение
Покажу пример на PB как это может выглядеть.
Я не особо понимаю что там на скринах, но я о писал о том, что например UDT в ней кроме данных лежит
указатель, оно указывает на UDT где кроме данных тоже указатель, который указывает тоже на UDT.
Так вот может ли отладчик остановить прогу и ПЕРЕМЕЩАТЬСЯ по всей этой структуре заведённой из
многих мегабайт, как по уровням вверх вниз так и по текущему уровню, при этом в понятном мне виде
отображая на каком уровне он сейчас находится и соотв. параметры всех переменных не хексами, а в том
виде, в котором они зарезервированы в программе. Я полагаю даже если может, оно будет выглядеть
через жопу и отлаживать что-то в таких обстоятельствах было бы нереально. Вот о таких ситуациях.

Добавлено через 10 минут
И вроде из сказанного выше понятно, что указатели это часто списки, отладка списков на указателях
предполагает вывод не одного значения, а нескольких, а лучше и всего списка целиком, что невозможно
на экране, но возможно в виде лога, но т.к. это лучше делать на определённом этапе(т.к. мы тестируем что-то
что работает со списком), эта вещь должна быть опционально скодена в программе. Или отладчик может
писать лог и сколько действий надо сделать чтобы он это сделал?

В общем понятно, что нишиша не понятно и по итогу всё равно проще напихать точечно отладочного кода,
как говорится "если уж", которое предпочитаю исключать, все эти "если".

Добавлено через 7 минут
Мы по сути дошли до того момента, что и без отладчика можно запудрить себе бошку так, что
попросту запутаешься вмясо. Уже не говоря о том, чтобы что-то там где-то пытаться наотлаживать.
Т.е. актуальность того, что по сути лучше проектировать сразу нормально в подобных условиях
сильно растёт, т.к. можно похерить программу и уже не вернуть к жизни.

Добавлено через 23 минуты
Цитата Сообщение от locm Посмотреть сообщение
Можно пошагово если вообще непонятно где ошибка или ставить точки останова в требуемых местах.
Мне два раза приходилось копошить такое говно, в одном случае это была чужая программа,
там кейзов не было были GOSUB-ы, суть та же но жёще. Результат - составив блок схему я долго
бодался, обессилил и тупо написал своё.
Второй случай: была моя собственная прога и там была допущена техническая ошибка(по моему
в последовательности т.е. классика при быстром забивании кода), а алгоритм был верен,
так вот состояний там было всего 5(это считай "тестовый стенд" был), кода много было, но ошибку
пришлось поискать пару часов.
И это реалии, чётко формализованный рабочий алг, а представь реально 50 было бы. Да нахер надо! )))
1
Эксперт по электронике
6497 / 3127 / 331
Регистрация: 28.10.2011
Сообщений: 12,292
Записей в блоге: 7
25.02.2024, 01:11
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Можно просто увидеть баг и выйти из программы или её саму вышибет
При вылете программы в большинстве случаев отладчик перехватывает исключение и указывает на строку кода, при выполнении которой был вылет. При этом может сохранится доступ к значениям переменных, истории вызовов и т. д. Это может помочь определить причину ошибки.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Т.е. откуда отладчик поймёт, что надо остановить,
и самое главное где и по каким критериям, представь у тебя толстая прога, гоняющая сотни мегабайт,
и баг, появляющийся случайно. Брекпоинт не поможет вообще никак.
Может помочь условная точка останова если известно за значением какой переменной нужно следить.


Цитата Сообщение от Quiet Snow Посмотреть сообщение
Но для них нужен жёсткий диск с лицензионным маком ну и понимать как это делать.
Не нужен. Я же пишу, что работает на виртуальной машине под виндой на самом обычном компе.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Я не особо понимаю что там на скринах
На скринах значения полей структуры.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
например UDT в ней кроме данных лежит
указатель, оно указывает на UDT
Уточню. Под UDT подразумеваете User Defined Type, т. е. структуру или что-то другое?
Если именно это, то не вижу причин чтобы не работало.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
при этом в понятном мне виде отображая на каком уровне он сейчас находится
Это пользовательский тип и отладчик не знает ни о каких уровнях. Он отобразит то что в полях структуры.


Цитата Сообщение от Quiet Snow Посмотреть сообщение
вывод не одного значения, а нескольких, а лучше и всего списка целиком, что невозможно
на экране
Почему невозможно? Если данные не помещаются целиком, появляется прокрутка.
1
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
25.02.2024, 01:40
Цитата Сообщение от locm Посмотреть сообщение
т. е. структуру или что-то другое?
У меня такая структура была, писал кастомную отладочную страницу уровней было больше.
Подробностей не помню, там был ад, помню что заводил память сразу во вложенных циклах.
Всё было зарегистрировано в UDT, возможно по каким-то причинам делал CAST-ы, не помню.
В любом случае ты понял про что речь. Про память, заведённую вложенными структурами.
Знаю предложишь использовать List-ы, но я про конкретно указатели, т.е. более универсальную вещь.

Цитата Сообщение от locm Посмотреть сообщение
На скринах значения полей структуры.
Это вижу, просто без хедера не понимаю что такое POINT, указатель ли это на UDT или сам UDT,
если структура - то результат это фактически обычная линейная структура, а я про другое писал.

Добавлено через 11 минут
Цитата Сообщение от locm Посмотреть сообщение
Это пользовательский тип и отладчик не знает ни о каких уровнях. Он отобразит то что в полях структуры.
В этом вся и проблема. Он даст посмотреть только то, на что наводишь мышкой.
Заточить его под задачу не получится. Им можно смотреть по сути самые простые вещи.
Что-то серьёзнее - уже бесполезно. У Замабувараева скорее всего тоже самое.

Цитата Сообщение от locm Посмотреть сообщение
При вылете программы в большинстве случаев отладчик перехватывает исключение и указывает на строку кода, при выполнении которой был вылет.
Вылет сам по себе даёт много информации и его легко локализовать.

Цитата Сообщение от locm Посмотреть сообщение
если известно за значением какой переменной нужно следить.
Если известно что проблема с конкретной переменной - это уже вся информация требуемая для
исправления, отладчик тут не нужен, код с конкретной переменной проверяется просто глазами.
Ну разумеется если ошибок не более одной, а иначе там не код, а фарш.
1
Эксперт по электронике
6497 / 3127 / 331
Регистрация: 28.10.2011
Сообщений: 12,292
Записей в блоге: 7
25.02.2024, 01:47
Цитата Сообщение от Quiet Snow Посмотреть сообщение
не понимаю что такое POINT
Это структура из винды которая появилась наверное в Win95 а может и раньше https://learn.microsoft.com/en... ndef-point
В FB тоже должна быть.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
В этом вся и проблема. Он даст посмотреть только то, на что наводишь мышкой.
Можно открыть окно просмотра переменных где будут все переменные/массивы/списки и др.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Вылет сам по себе даёт много информации и его легко локализовать.
Он не дает информацию о строке кода где был вылет.
Сведения о адресах и регистрах проца это больше полезно если прога на асме.
1
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
25.02.2024, 02:20
Цитата Сообщение от locm Посмотреть сообщение
Он не дает информацию о строке кода где был вылет.
Эта ошибка почти всегда легко локализуется. Потому что операций, которые могут дать вылет
немного. Это в основном работа с памятью и обращение к памяти(выход за зарезервированную).
Т.е. либо некорр работа с массивом либо с указателем. В коде быстро находится и локализуется,
ну разумеется если ошибка воспроизводимая, а иначе и отладчик скорее всего не поможет,
хаотический баг - это самый худший признак, это либо спаренные ошибки, либо неверный алгоритм,
отладчик может запутать, если кодер излишне на него понадеется и поверит первой выдаче.
Стараюсь перепроверять все элементы кода, в котором находится даже одна ошибка(не в алгоритме),
а если больше - то сразу весь код в мусорку и на пересборку.

Выигрыш в пару минут - это несерьёзно, чтобы это тут обсуждать. Концепция, которую освещаю даёт
гораздо больший выигрыш по всем фронтам. Не без издержек само собой. Но учитывая что кодинг
меньшая из частей по времени - оправдано.
1
Эксперт по электронике
6497 / 3127 / 331
Регистрация: 28.10.2011
Сообщений: 12,292
Записей в блоге: 7
25.02.2024, 02:31
Цитата Сообщение от Quiet Snow Посмотреть сообщение
В коде быстро находится и локализуется
Каким образом?
Допустим в коде 10 тысяч строк и почти везде работа с указателями. Как быстро найдете участок кода из-за которого вылет? Код может быть в порядке, а указатель вне допустимого значения (память не выделена, или была ранее освобождена или нет прав доступа к ней). Как узнаете в какой строке вылет?
Еще бывает такой сложно выявляемый баг как повреждение кучи. Вылет будет на абсолютно рабочем коде и с корректрым указателем. Внимательное изучение кода и логов на предмет ошибок могут не дать результата, т. к. в коде ошибок нет.
1
Кормпилятор
 Аватар для Quiet Snow
5043 / 1717 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
25.02.2024, 02:46
Цитата Сообщение от locm Посмотреть сообщение
Допустим в коде 10 тысяч строк и почти везде работа с указателями.
Вылет случается после одного из "апгрейдов" кода, соотв смотрим в это место и рядом с ним,
написать 10k ни разу не запуская - это сильно))) я так не умею)))

Цитата Сообщение от locm Посмотреть сообщение
Еще бывает такой сложно выявляемый баг как повреждение кучи.
Логично предположить, что это из-за чего-то происходит. Если алг верный и хеп попортил не код,
то кодер тут не виноват. Однако ошибка воспроизводимая будет означать что кодер всё таки виноват.
А если нет - то смысл запариваться, просто проверить ещё раз куски по отдельности и осознать
что произошёл разовый сбой аппаратуры. Вообще подобного ни разу не встречал.
Отладчик тут тоже слабо поможет. В любом из случаев кодер будет в сомнениях, разрешить которые
может только анализ кода.
1
 Аватар для Mikle Quits
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 387
25.02.2024, 12:25
Quiet Snow, читаю тему, и думаю - это ты серьёзно про ненужность отладчика, или, всё-таки, это такой своеобразный троллинг?
Причём тут "модно и современно"? Дебаггером (за неимением лучшего) отлаживали ещё под самый ранний ДОС ассемблерные программы.
Причём тут алгоритмы? Отлаживают, как правило, не их, а случайные ошибки\опечатки. Можно правильно и хорошо заранее продумать алгоритм, но вместо "Exit Do"случайно написать "Exit Sub". Глаз "замыливается", такую ошибку можно часами искать, а в отладчике, проходя участок программы пошагово, найдёшь сразу.
Ещё рассмешило, что лучший вариант набирать длинные имена - это Copy-Paste. А не лучше нормальный intelliSence?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2024, 12:25
Помогаю со студенческими работами здесь

Отладка Кода
{ Console.WriteLine("Привет пользователь. Как тебя зовут?"); string name = Console.ReadLine(); ...

Отладка кода
Я на форуме давно... и вот стало мне жутко интересно, кто как код отлаживает... потому 99% начинающих вообще никогда не слышали про...

Отладка кода
Олимпиадная задача : вводятся N строк описания товаров (стоимость, время завоза и время вывоза), N строк описания запросов (время захода...

Отладка кода
программа для удаления повторяющихся элементов в строке flag::Int->->Int flag n=FALSE flag n(x:xs) = if x ==n then TRUE ...

Отладка кода
Помогите пожалуйста отладить код. Собрал вот такое #include<iostream> int Check(int a) { int b; for(b = a * a; a &&...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru