Ха, новый проект на плюсах! / языки программирования :: программирование :: it-юмор :: комикс :: С++ :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)
Подробнее
Ха, новый проект на плюсах!
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,языки программирования,программирование,С++,комикс
Сталкиваешься с ошибкой, тратишь весь рабочий день, чтобы её локализовать, исправить или хотя бы обойти. Следующий день тратишь на поиск информации в сети. Находишь древний всеми забытый форум где описывается твоя проблема в комментарии за 2001 год. А следующим комментом идёт ответ из 2010, где ему отвечают, что новые разработчики CBuilder данную проблему решили в одном из патчей в 2005 году. Совместимости со старыми проектами в новых версиях нет.
За пару часов пересоздаёшь проект с полным копированием всего кода и компонентов. Работает.
один друг, адепт низшего пищевого звена программирования, интересуется - а как можно пофиксить проблему пересоздавая проект? Типа юзая рефы на обновлённые апи либ, или в чём цимес?
Умер стандартный компонент кнопки в стандартной библиотеке. Переподключение её в проекте результатов не дало.
Условно, на форме три стандартные кнопки. Созданы в мохнатых годах не мной, десяток лет их код точно никто не трогал. В один момент, даже не после апдейта программы, а просто в случайное время, одна кнопка перестала работать. Нажимаешь, а там ошибка с набором буквоцифр, и краш программы.
Крашит сразу после прохода всего кода на кнопке. Переносишь код на соседнюю кнопку, этот код на другой кнопке работает.
Если удаляешь весь код внутри, кнопка всё равно крашит.
Если создаёшь новую пустую кнопку на форме, она ТОЖЕ КРАШИТ!
Смотришь прошлые версии программы, там эта кнопка тоже не работает.
Весь код этого компонента идентичен коду соседних, но которые работают. ctrl+C ctrl+V рабочей кнопки создаёт нерабочую.
Открываешь другой рабочий проект, создаёшь пустую кнопку, она работает.
Просто в одном конкретном проекте перестал работать стандартный компонент кнопки. Причём только одна из старых и каждая новая. Проект был большой. но я быстро его перенёс в новый пустой проект, просто перенося код и расставляя те же компоненты с теми же настройками. Но эта херня с кнопками потом опять повторилась спустя пол года, но уже для другой кнопки в другом небольшом приложении. Так же внезапно, без вмешательств.
Только стандартные библиотеки от Borland CBuilder 5 и 6.
Я был бы рад постигнуть единение с машиной, чтобы говорить на их языке, но увы. Мне и самому интересно, в чём могла быть причина такого поведения программы.
первое, что в голову приходит - это перелинковка. Но ни я, ни мой друг не шарят. И друг просто в восторге, что с его скриптовым говном, проблем такого плана не существует) Спасибо за инфу
Похоже на ошибку работы с памятью. То самое UB. Поведение зависит от рандома, который оказывается в определённом блоке памяти. В вашем случае вышло так, что в 99% случаев оно не сказывается на поведении. Но когда наступает этот 1% - начинаются чудеса.
Гейзенбаги в C/C++ всегда связаны с ошибкой работы с памятью. В этом случае то что проблемный "код работает" не является подтверждением его правильности. Ему просто повезло, но он всё равно кривой.
В современном окружении, как правило, отлов багов с памятью не представляет большой проблемы (valgrind), за исключением довольно вычурных ошибок программиста приводящих к stack smashing'у (но и тут есть методы). В случае с Borland C ребятам можно только посочувствовать.
если что-то относительно стабильно воспроизводится, то обычно не проблема выяснить в чем дело. на лине такое вполне комфортно ловится через valgrind и gdb. быстрый поиск говорит что на винде тоже есть неплохие аналоги: (drmemory, verysleepy, VMMap, Application Verifier). в теории, для системщика, бинари не особо отличаются от скриптов, но сама история полна мистики и приключений. спасибо.
Я не дед. Пришёл с ВУЗа на завод, и вот...
Сама история из 2020. Даже сейчас там продолжают работать на этом. Сейчас на моё место пришёл смельчак, который всё это переносит на web, я лишь пожелал удачи. Для одного человека там неподъёмный объём, и от такого наследия там избавятся не скоро.
Ну так я пошагово и выполнял. Я же сказал, после последнего оператора в Button1Click сразу и выбрасывало, сразу. И если правильно помню, падало вместе с билдером. Он вообще любил падать вместе с программой, так что особо не удивляло.
Ну Вулкан сейчас является трендом. Он более низкоуровневый, чем OpenGl, что позволяет иметь больше контроля за ресурсами. Теоретически может дать профит на 10-20%
А оно как-то исторически сложилось с тех пор, когда мне в школе в руки попала ардуина. Хотя около-железные наклонности и раньше были. Я к тому моменту уже прогал на VB, потихоньку переползая на шарп. В универе сначала прогал веб на шарпе, мобилки, а потом как-то ушел в сишку.
В проекте в прерывании была ошибка, грубо говоря инкремент count++ не работал, спустя пару дней понял, что если переписать простое условие со switch case на if - начинает работать
А настоящий плюсоёб бы открыл Disassembly и посмотрел что там нагенерилось, что инкремент не работает. Поменял бы пост-инкремент на пре-инкремент, и была бы благодать...
Выбираем первый язык программирования
Да
т
У вас есть друзья?
i
Да
Т
Хотите много зарабатывать?
jL
Да
ш
Вы тупой?
т.
Т
Вы насмотрелись уроков ХАУДИ ХО?
/Г
Да
7
Python
Вам
г~ нравится 1
1 Windows?
Нет
Fortran
А они вам нужны?
Они тоже РНР
тупые?
Да
т
За пару часов пересоздаёшь проект с полным копированием всего кода и компонентов. Работает.
один друг, адепт низшего пищевого звена программирования, интересуется - а как можно пофиксить проблему пересоздавая проект? Типа юзая рефы на обновлённые апи либ, или в чём цимес?
Условно, на форме три стандартные кнопки. Созданы в мохнатых годах не мной, десяток лет их код точно никто не трогал. В один момент, даже не после апдейта программы, а просто в случайное время, одна кнопка перестала работать. Нажимаешь, а там ошибка с набором буквоцифр, и краш программы.
Крашит сразу после прохода всего кода на кнопке. Переносишь код на соседнюю кнопку, этот код на другой кнопке работает.
Если удаляешь весь код внутри, кнопка всё равно крашит.
Если создаёшь новую пустую кнопку на форме, она ТОЖЕ КРАШИТ!
Смотришь прошлые версии программы, там эта кнопка тоже не работает.
Весь код этого компонента идентичен коду соседних, но которые работают. ctrl+C ctrl+V рабочей кнопки создаёт нерабочую.
Открываешь другой рабочий проект, создаёшь пустую кнопку, она работает.
Просто в одном конкретном проекте перестал работать стандартный компонент кнопки. Причём только одна из старых и каждая новая. Проект был большой. но я быстро его перенёс в новый пустой проект, просто перенося код и расставляя те же компоненты с теми же настройками. Но эта херня с кнопками потом опять повторилась спустя пол года, но уже для другой кнопки в другом небольшом приложении. Так же внезапно, без вмешательств.
Только стандартные библиотеки от Borland CBuilder 5 и 6.
то бишь - вы сами не знаете? )
первое, что в голову приходит - это перелинковка. Но ни я, ни мой друг не шарят. И друг просто в восторге, что с его скриптовым говном, проблем такого плана не существует) Спасибо за инфу
В современном окружении, как правило, отлов багов с памятью не представляет большой проблемы (valgrind), за исключением довольно вычурных ошибок программиста приводящих к stack smashing'у (но и тут есть методы). В случае с Borland C ребятам можно только посочувствовать.
Сама история из 2020. Даже сейчас там продолжают работать на этом. Сейчас на моё место пришёл смельчак, который всё это переносит на web, я лишь пожелал удачи. Для одного человека там неподъёмный объём, и от такого наследия там избавятся не скоро.
Ах, если бы были эти. Как их там. Брейкпойнты...
В проекте в прерывании была ошибка, грубо говоря инкремент count++ не работал, спустя пару дней понял, что если переписать простое условие со switch case на if - начинает работать