|
4 / 4 / 0
Регистрация: 13.07.2021
Сообщений: 45
|
|
Gdb виснет при отладке SDL04.12.2025, 22:13. Показов 583. Ответов 6
Всем здаравствуйте. Нашёл я тут интересный курс по созданию 3D графики from scratch: только компилятор, SDL и чистый C. На одном из заданий свалилась у меня программа в segmentation fault. Ошибку я нашёл, благо несложная программа, в самом начале курса, кода не много. Но меня очень заинтересовал случай, произошедший при отладке, хочу с ним разобраться.
Сперва всё идёт хорошо, мы заходим в функцию main, инициализируем SDL, а вот как только вызывается функция SDL_CreateWindow, у меня виснет нафиг всё, причём так, что я секунд 30 не могу даже 2-й терминал вызвать, чтобы посмотреть PID процесса и пристрелить его к такой-то матери. В чём может быть проблема? У меня на машине стоит Linux Slackware, оконный менеджер icewm, при компиляции выставлены флаги -g и -Wall, в начале отладки ставлю брейкпоинт на main и степами аккуратно двигаюсь. В гугле ничего не накопал, возможно надо что-то сделать, с какими-то флагами запустить отладчик, чтобы посмотреть, что творится в коде библиотечной функции? Исходный код библиотеки я глянул, нашёл функцию, где заголовки, где дефайнятся нужные структуры, но всё равно не понял, почему я не могу проследовать по коду в отладчике, и почему он виснет на простенькой программе в 100 с небольшим строк включая переносы. Заранее спасибо. P.S. работаю с библиотекой SDL2.
0
|
|
| 04.12.2025, 22:13 | |
|
Ответы с готовыми решениями:
6
CodeLite ошибка failed to locate gdb! at 'gdb' Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? Компилятор требует SDL/SDL.h |
|
226 / 184 / 80
Регистрация: 13.04.2014
Сообщений: 694
|
|
| 05.12.2025, 07:05 | |
|
Я тут просто мимо ппроходил
Скинь плз ссылку на курс И попробуй breakpoint поставить после SDL_CreateWindow
0
|
|
|
4 / 4 / 0
Регистрация: 13.07.2021
Сообщений: 45
|
||
| 05.12.2025, 13:49 [ТС] | ||
|
По-моему он на Шервуде есть, надо для этого аккаунт там иметь. Сам курс 80 гигов весит. Посмотрю, может смогу раздать как-то.
Хотя, попробую, может что покажет интересного.
0
|
||
|
Модератор
|
|
| 05.12.2025, 13:55 | |
|
Для отладки графики, а точнее того что происходит на видеокарте надо использовать RenderDoc, но он не работает с фиксированным конвейером (glBegin/glEnd).
И по сути для 3д SDL не нужен, его можно заменить на GLFW, чтобы окно кроссплатформенно создавать.
0
|
|
|
4 / 4 / 0
Регистрация: 13.07.2021
Сообщений: 45
|
||
| 05.12.2025, 18:44 [ТС] | ||
|
Курс не для запуска на видюхе (у него где-то есть другой курс по графике не железе), тут олдскульный запуск на проце. Это позволяет не вдаваться уж слишком в нюансы и сформировать мощный фундамент, на который потом легко лягут какой-нибдуь DirectX3D, вулкан или программирование для запуска на GPU. Цель - научиться, выстроить фундамент и понимание. Не люблю чёрные ящики, в которые что-то заходит, как-то там преобразуется и потом что-то выходит. Хочу понимать, что я делаю. Мне эта ситуация нисколько не мешает проходить дальше курс, тут вопрос именно в понимании: а) какого вообще происходит; б) как это пофиксить или избежать. Надеюсь что понятно объяснил, зачем мне это). Добавлено через 4 часа 40 минут Курс можно посмотреть по ссылке вот здесь: программирование трёхмерной компьютерной графики.
0
|
||
| 07.12.2025, 14:22 | ||||||||
|
Я бы на вашем месте лучше бы использовал крайнюю версию SDL3 вместо SDL2, или чуть более раннюю версию SDL3, если вы не доверяете самым крайним версиям, потому что разработчики SDL несколько лет сфокусированы именно на SDL3 и это значит, что они более оперативно могут ответить в Issues на GitHub: https://github.com/libsdl-org/SDL/issues Если не хотите сразу Issue создавать, то спросите на их официальном Discord-сервере (Discord запрещён в РФ), где много активных разработчиков самой SDL, или на официальном форуме SDL. У них очень активный форум, Issues и т.д. Может это какой-то хитрый баг SDL2 на Linux какой-то специфической версии SDL2 и возможно этот баг был исправлен в более поздних версиях SDL2 или SDL3. SDL3, в отличает от SDL2, легко запускать на платформах: Android, Desktop и Web. Разработчики SDL3 официально поддерживают ещё множество других платформ. В официальном репозитории есть множество примеров: examples/renderer/01-clear/clear.c на языке Си по 2D API SDL3, например, смена цвета фона по таймеру:
1
|
||||||||
| 08.12.2025, 12:52 | |||||||||
|
Uko1ove, когда вы позже будете переходить на графические API, то вы можете остаться на SDL и не переучиться на другую библиотеку. SDL не только имеет свой 2D API, на котором можно попрактиковаться в программировании на Си и технологиях на простых 2D-игрушках, но и поддерживает создание окна для чистых графических API, например, OpenGL и Vulkan. Если возникла "странность" в поведении библиотеки, то это не повод её менять. Тем более вы знаете, как эту проблему обойти. Это повод докопаться до истины, например, через разработчиков SDL на их официальном *Discord-сервере, GitHub Issues и т.д. Мне не понравилась GLFW прежде всего тем, что у неё остался в основном только один отвечающий на официальном форуме: https://discourse.glfw.org/ Этот же человек в 99% случаев занимается Issues. Откройте почти любой issue и вы его увидите: https://github.com/glfw/glfw/issues У GLFW нет официального *Discord-сервера. Я считаю, что это очень плохо, когда в основном на одном человеке держатся Issues и официальный форум. Если вы откроете GitHub-репозиторий SDL, официальный форум или официальный *Discord-сервер SDL, то увидите, как много активных разработчиков SDL там. В отличие от GLFW, SDL официально поддерживает Android, HTML5/WebGL/WebGPU и множество других платформ, которые GLFW официально не поддерживает. Я в 2022 году решал проблему с ограничением FPS на GLFW, на официальном форуме, начиная с этого сообщения. У GLFW нет эквивалента SDL_Delay(), поэтому приходилось использовать костыль-функцию кроссплатформенной задержки, что сильно плохо для создания примеров для туториалов для начинающих в блоге:
Ответ от Gemini:
0
|
|||||||||
| 08.12.2025, 12:52 | |
|
Помогаю со студенческими работами здесь
7
Виснет программа при компиляции, степовер не работает, так же виснет Отсутствуют синие точки перед рядом строк при отладке. Пропускаются эти строки при выполнении SDL и задержка движения персонажа при зажатии клавиши SDL: Нарушение прав доступа при работе с рендером Ошибка компилятора gcc при использовании библиотека SDL в C Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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
|