|
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 62
|
|
Отладка кода (программы) во FreeBasic21.02.2024, 01:11. Показов 15391. Ответов 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
Сообщений: 62
|
|
| 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
Сообщений: 62
|
|
| 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
|
|||
|
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 387
|
|
| 25.02.2024, 12:25 | |
|
Quiet Snow, читаю тему, и думаю - это ты серьёзно про ненужность отладчика, или, всё-таки, это такой своеобразный троллинг?
Причём тут "модно и современно"? Дебаггером (за неимением лучшего) отлаживали ещё под самый ранний ДОС ассемблерные программы. Причём тут алгоритмы? Отлаживают, как правило, не их, а случайные ошибки\опечатки. Можно правильно и хорошо заранее продумать алгоритм, но вместо "Exit Do"случайно написать "Exit Sub". Глаз "замыливается", такую ошибку можно часами искать, а в отладчике, проходя участок программы пошагово, найдёшь сразу. Ещё рассмешило, что лучший вариант набирать длинные имена - это Copy-Paste. А не лучше нормальный intelliSence?
0
|
|
| 25.02.2024, 12:25 | |
|
Помогаю со студенческими работами здесь
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
|