|
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
|
|
Отладка кода (программы) во FreeBasic21.02.2024, 01:11. Показов 17403. Ответов 224
Уважаемые программисты. Подскажите - как производится
В QB это делалось просто. В меню Debug командой toggle breakpoint метится строка до которой проверить. После запуска идет проверка, отмечаются ошибки, проблемы. У меня во FreeBasic этот метод не работает. Программа на метку не реагирует, действия не совершаются. Прошу помощи.
0
|
|
| 21.02.2024, 01:11 | |
|
Ответы с готовыми решениями:
224
Грамотная отладка программы, подмога в структуризации кода Отладка программы в Delphi(нужно подредактировать текст чужой программы) |
|
|
|
| 24.02.2024, 15:46 | |
|
А почему нельзя просто запилить хотя бы текстовую оболочку как в quick basic, turbo pascal, где дебаггер из коробки и ОЧЕНЬ удобен? Ну хотя бы вот это сделать. Ну ведь умели же когда-то так делать, чтобы просто и удобно.. Только под винду, линукс и мак. Вот хотя бы то что было в dos. Зачем навороченные, вот это ХОТЯ бы сделать..
0
|
|
|
|
||
| 24.02.2024, 16:28 | ||
|
Отсутствие обязательной декларации переменных позволяет создавать их на лету и случайная опечатка может привести к трудно уловимой ошибке, особенно если нет отладчика.
0
|
||
|
|
||
| 24.02.2024, 17:36 | ||
|
0
|
||
|
Кормпилятор
|
||
| 24.02.2024, 19:12 | ||
|
для имён любых сущностей проги. И меня дико радует софт, который по даблклику выделяет слово без всяких пробелов, просто слово.
0
|
||
|
COM‐пропагандист
|
|||||
| 24.02.2024, 19:57 | |||||
|
А в отладчике навёл мышку на переменную — и её значение отобразилось во всплывающей подсказке. Не надо выдумывать никаких принтов и шаблонов для отладки. В отладчик принт уже встроен для любой переменной и памяти.
1
|
|||||
|
Кормпилятор
|
||
| 24.02.2024, 20:28 | ||
|
и закатай губцы. Текстовый - это, имхо, пустая трата времени. Если бы пилил редактор(а в этом направлении пытаюсь вести работу, условий нет - но пытаюсь), то положил бы большой и толстенный х** на отладчик. Это вообще не главное. Потому что суть как раз в 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
Сообщений: 65
|
|
| 24.02.2024, 20:53 [ТС] | |
|
CoderHuligan
Если ответ и для меня, я про свои проблемы сообщил в 18 сообщении. Увы, очень мало знаний и объективный напряг по стратегии времени. Добавлено через 7 минут Если ответ и для меня, я свои проблемы описал в сообщении 18. Увы, знаний очень мало, времени на изучение всех программных возможностей и возможностей различных инструментов тоже.
0
|
|
|
Кормпилятор
|
|||||||
| 24.02.2024, 20:59 | |||||||
|
проще было передавать параметром указатель. с выбором компилируемого модуля. Ну и да я не так часто рекомпилирую, чтобы мне даже 2 или 3 секунды было проблемно ждать. Можно автоматизировать, но зачем? Когда и так всё хорошо. Вон у Стаса его Window9 да, там она больше минуты компилится. Но там и рассчитано, что можно тестить и отдельно функции в модулях. Для разных людей, боящихся за жёсткий диск можно это делать на RAM диске через тот же ImDisk. А есть ещё жёще вариант, прикинь CASE логика из пол сотни состояний, состояния постоянно меняются и зависят от кода внутри этих состояний. Как ты такое будешь отлаживать? Полагаю никак))) Я бы просто в мусорку код выкинул, будь там хоть один даже мелкий баг, если не ясно откуда он берётся. Опять же, только грамотное продумывание всех частей алгоритма может избавить от проблем. Потому что в таких случаях не всегда достаточно видеть 1 элемент, часто нужно видеть несколько элементов, причём опять же если мы отлаживаем такие структуры и действия в них это не должна быть готовая программа, т.е. не проверив запихать и потом трахаться, это всё проверяется после каждой операции над этой структурой. Выходит если человек и не сойдёт с ума, делая все эти действия через отладчик, то времени он явно потратит существенно больше. Ну т.е. он в любом случае при баге потратит дофига времени. Лучше это время потратить за письменным столом чем потом пытаться понять где и чего не пашет. Добавлено через 5 минут Графика для чего? 2D - стандартной GfxLib(встроенная в FB) пользуйся, 3D - OpenGL пример недавно человек выложил в закреплённую тему. Звук. Опять же для чего? Если простенько - FBSound. Подключить и юзать - несложно, возможностей там много, даже CALLBACK на буфер есть. Посложнее - mme, по примерам самостоятельно можно осилить. Ещё была библиотека SQUALL по звуку, у Стаса можешь спросить, на новых компилях не знаю работает или нет, на старых тестил - работало отлично.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 65
|
|
| 24.02.2024, 21:24 [ТС] | |
|
Quiet Snow
"Это не проблемы. Это так мелочи: Графика для чего? 2D - стандартной GfxLib(встроенная в FB) пользуйся, 3D - OpenGL пример недавно человек выложил в закреплённую тему. Звук. Опять же для чего? Если простенько - FBSound. Подключить и юзать - несложно, возможностей там много, даже CALLBACK на буфер есть. Посложнее - mme, по примерам самостоятельно можно осилить. Ещё была библиотека SQUALL по звуку, у Стаса можешь спросить, на новых компилях не знаю работает или нет, на старых тестил - работало отлично." Графика для 3D- геометрическая математика. Количественно не сложно, геометрически - объёмная структура при рассмотрении под разными углами, при поворотах для обзора в глубину. В 2D справляюсь. Звук попробовал, не решает то что нужно. В виде простейшей синусоиды - противный результат, в узком диапазоне. предполагал - иметь возможность вытащить звуковые формы из программных синтезаторов, из звуковой карты, но, по видимому кроме штатных нот оттуда нужные мне наборы, комбинации, ряды звуков не взять. (вопросы задавал - не прояснили) Звуки нужны по заданнай числовой величине. Строго.
0
|
|
|
COM‐пропагандист
|
|||
| 24.02.2024, 21:33 | |||
|
1
|
|||
|
Кормпилятор
|
||||
| 24.02.2024, 23:06 | ||||
|
просто вываливает тебе кучу гавна и мол разгребай как хочешь. отладчик тебе не поможет, если ты лажанёшь в алгоритме. Но я не против, лажай и потом трать время на отладку))) Добавлено через 16 минут FBSound - воспроизводит любой семпл, в т.ч. с ресемплингом(без интерполяции). Его хватит, если цель не писать свой секвенсор. По 3D - настраиваешь OpenGL, камера статична, вращаешь мир вокруг камеры с помощью обычной тригонометрии, 9 классов школы надо. Элементарщину можно сохранять в .obj файл на Blender. И парсить на FB, это вроде текстовый файл. Уроков по Blender - миллионы в сети. Не знаю чё ты там мутишь, раз не конкретизируешь. Ну информация есть по этим вопросам. Звуки можно достать либо из VSTi синтезаторов, либо из семплов(есть семплер KONTAKT, к нему много реалистично звучащих библиотек муз. инструментов) Вот есть ещё беспл. софтина для создания звуковых эффектов: https://www.bfxr.net
1
|
||||
|
|
|||||
| 24.02.2024, 23:33 | |||||
|
Правда не уверен сработает ли это с MacOS для ARM процессоров. А для x86-x64 работает. Старый подход с принтами и логом это хорошо, но он использовался из-за недостатка ресурсов компов тех лет, а не потому что удобен.
1
|
|||||
|
Кормпилятор
|
|||||
| 25.02.2024, 00:52 | |||||
|
Можно просто увидеть баг и выйти из программы или её саму вышибет, что даже лучше, последние данные лога будут актуальными. И кстати не факт, что они помогут. А фишка в том, что этот самый требуемый момент это неизвестная величина, и тем паче неизвестная если внезапно окажется, что алгоритм неправилен изначально. Т.е. откуда отладчик поймёт, что надо остановить, и самое главное где и по каким критериям, представь у тебя толстая прога, гоняющая сотни мегабайт, и баг, появляющийся случайно. Брекпоинт не поможет вообще никак. Причём баг может быть не технический, а в самом алгоритме и допустим исправляемый, т.е. формально прямых признаков ошибки выполнения функций не будет. И ищи свищи... Т.е. всё таки купить какой-нибудь старый мак, вытащить оттуда хард, сделать копию харда чтобы не просрать ОС, и потом уже возиться по инструкциям. Можно но как-то слабо хочется этим заниматься. И есть один нюанс, я не уверен что FB для мака есть, т.е. если писать код на FB, которого нет для мака. указатель, оно указывает на UDT где кроме данных тоже указатель, который указывает тоже на UDT. Так вот может ли отладчик остановить прогу и ПЕРЕМЕЩАТЬСЯ по всей этой структуре заведённой из многих мегабайт, как по уровням вверх вниз так и по текущему уровню, при этом в понятном мне виде отображая на каком уровне он сейчас находится и соотв. параметры всех переменных не хексами, а в том виде, в котором они зарезервированы в программе. Я полагаю даже если может, оно будет выглядеть через жопу и отлаживать что-то в таких обстоятельствах было бы нереально. Вот о таких ситуациях. Добавлено через 10 минут И вроде из сказанного выше понятно, что указатели это часто списки, отладка списков на указателях предполагает вывод не одного значения, а нескольких, а лучше и всего списка целиком, что невозможно на экране, но возможно в виде лога, но т.к. это лучше делать на определённом этапе(т.к. мы тестируем что-то что работает со списком), эта вещь должна быть опционально скодена в программе. Или отладчик может писать лог и сколько действий надо сделать чтобы он это сделал? В общем понятно, что нишиша не понятно и по итогу всё равно проще напихать точечно отладочного кода, как говорится "если уж", которое предпочитаю исключать, все эти "если". Добавлено через 7 минут Мы по сути дошли до того момента, что и без отладчика можно запудрить себе бошку так, что попросту запутаешься вмясо. Уже не говоря о том, чтобы что-то там где-то пытаться наотлаживать. Т.е. актуальность того, что по сути лучше проектировать сразу нормально в подобных условиях сильно растёт, т.к. можно похерить программу и уже не вернуть к жизни. Добавлено через 23 минуты там кейзов не было были GOSUB-ы, суть та же но жёще. Результат - составив блок схему я долго бодался, обессилил и тупо написал своё. Второй случай: была моя собственная прога и там была допущена техническая ошибка(по моему в последовательности т.е. классика при быстром забивании кода), а алгоритм был верен, так вот состояний там было всего 5(это считай "тестовый стенд" был), кода много было, но ошибку пришлось поискать пару часов. И это реалии, чётко формализованный рабочий алг, а представь реально 50 было бы. Да нахер надо! )))
1
|
|||||
|
|
||||||||
| 25.02.2024, 01:11 | ||||||||
|
Если именно это, то не вижу причин чтобы не работало.
1
|
||||||||
|
Кормпилятор
|
||||||
| 25.02.2024, 01:40 | ||||||
|
Подробностей не помню, там был ад, помню что заводил память сразу во вложенных циклах. Всё было зарегистрировано в UDT, возможно по каким-то причинам делал CAST-ы, не помню. В любом случае ты понял про что речь. Про память, заведённую вложенными структурами. Знаю предложишь использовать List-ы, но я про конкретно указатели, т.е. более универсальную вещь. если структура - то результат это фактически обычная линейная структура, а я про другое писал. Добавлено через 11 минут Заточить его под задачу не получится. Им можно смотреть по сути самые простые вещи. Что-то серьёзнее - уже бесполезно. У Замабувараева скорее всего тоже самое. исправления, отладчик тут не нужен, код с конкретной переменной проверяется просто глазами. Ну разумеется если ошибок не более одной, а иначе там не код, а фарш.
1
|
||||||
|
|
||||
| 25.02.2024, 01:47 | ||||
|
В FB тоже должна быть. Сведения о адресах и регистрах проца это больше полезно если прога на асме.
1
|
||||
|
Кормпилятор
|
||
| 25.02.2024, 02:20 | ||
|
немного. Это в основном работа с памятью и обращение к памяти(выход за зарезервированную). Т.е. либо некорр работа с массивом либо с указателем. В коде быстро находится и локализуется, ну разумеется если ошибка воспроизводимая, а иначе и отладчик скорее всего не поможет, хаотический баг - это самый худший признак, это либо спаренные ошибки, либо неверный алгоритм, отладчик может запутать, если кодер излишне на него понадеется и поверит первой выдаче. Стараюсь перепроверять все элементы кода, в котором находится даже одна ошибка(не в алгоритме), а если больше - то сразу весь код в мусорку и на пересборку. Выигрыш в пару минут - это несерьёзно, чтобы это тут обсуждать. Концепция, которую освещаю даёт гораздо больший выигрыш по всем фронтам. Не без издержек само собой. Но учитывая что кодинг меньшая из частей по времени - оправдано.
1
|
||
|
|
||
| 25.02.2024, 02:31 | ||
|
Допустим в коде 10 тысяч строк и почти везде работа с указателями. Как быстро найдете участок кода из-за которого вылет? Код может быть в порядке, а указатель вне допустимого значения (память не выделена, или была ранее освобождена или нет прав доступа к ней). Как узнаете в какой строке вылет? Еще бывает такой сложно выявляемый баг как повреждение кучи. Вылет будет на абсолютно рабочем коде и с корректрым указателем. Внимательное изучение кода и логов на предмет ошибок могут не дать результата, т. к. в коде ошибок нет.
1
|
||
|
Кормпилятор
|
|||
| 25.02.2024, 02:46 | |||
|
написать 10k ни разу не запуская - это сильно))) я так не умею))) то кодер тут не виноват. Однако ошибка воспроизводимая будет означать что кодер всё таки виноват. А если нет - то смысл запариваться, просто проверить ещё раз куски по отдельности и осознать что произошёл разовый сбой аппаратуры. Вообще подобного ни разу не встречал. Отладчик тут тоже слабо поможет. В любом из случаев кодер будет в сомнениях, разрешить которые может только анализ кода.
1
|
|||
|
781 / 298 / 17
Регистрация: 21.01.2023
Сообщений: 518
|
|
| 25.02.2024, 12:25 | |
|
Quiet Snow, читаю тему, и думаю - это ты серьёзно про ненужность отладчика, или, всё-таки, это такой своеобразный троллинг?
Причём тут "модно и современно"? Дебаггером (за неимением лучшего) отлаживали ещё под самый ранний ДОС ассемблерные программы. Причём тут алгоритмы? Отлаживают, как правило, не их, а случайные ошибки\опечатки. Можно правильно и хорошо заранее продумать алгоритм, но вместо "Exit Do"случайно написать "Exit Sub". Глаз "замыливается", такую ошибку можно часами искать, а в отладчике, проходя участок программы пошагово, найдёшь сразу. Ещё рассмешило, что лучший вариант набирать длинные имена - это Copy-Paste. А не лучше нормальный intelliSence?
0
|
|
| 25.02.2024, 12:25 | |
|
Помогаю со студенческими работами здесь
40
Отладка кода Отладка кода Отладка кода Отладка кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|