HLFX.Ru Forum Страницы (4): « 1 [2] 3 4 »
Показать все 49 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- вопрос программистам, кодерам: как вы ищите ошибки? (https://hlfx.ru/forum/showthread.php?threadid=3676)


Отправлено XaeroX 04-02-2013 в 16:41:

Цитата:
thambs писал:
то этот r1 изредка почти лежит на границе и пересечение не детектируется

Либо где-то стоит ">" вместо ">=", либо снижена точность математики.
Ты во флоатах или в даблах считаешь?
_controlfp юзаешь?
Проблемы только в релизе или в дебаге тоже?

__________________

xaerox on Vivino


Отправлено thambs 04-02-2013 в 16:47:

XaeroX

во флоатах. для даблов слишком много памяти надо. а каждый раз туда-сюда преобразовывать как то не хорошо.

>_controlfp

что это?

а в дебаге не проверял. надо будет глянуть. обычно использую дебаг, только что бы совсем уж непонятные сегфолты определять.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 04-02-2013 в 17:14:

Цитата:
thambs писал:
что это?

Получение (и изменение) контрольного слова сопроцессора. В частности, точность арифметики с плавающей точкой. Проверь, может она у тебя снижена в релизе (компилятор постарался).

__________________

xaerox on Vivino


Отправлено thambs 05-04-2013 в 01:15:

AAARGH!!! опять же! на этот раз искал 16 часов -- причём, такую идиотскую ошибку, что в жизни б на это место не подумал.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено pRoxxx 05-04-2013 в 06:36:

Контрольные значения, брекпоинты. Иногда в Релиз моде выдает ошибку не там где надо, тогда помогает Дебаг Мод, а иногда в Релизе крашится, а Дебаге работает, тогда чуть посложнее. Если проблемы с памятью, могу подключить Visual Leak Detector иль PVS studio.


Отправлено Дядя Миша 05-04-2013 в 15:31:

Как бы микрософт не хаяли но компилер у него явно получшы, чем этот GCC.


Отправлено XaeroX 05-04-2013 в 15:49:

Дядя Миша
На линупсе гцц - пожалуй, лучшее, что есть для плюсов.
Это когда кучи шаблонов и прочего гамна.
Для обычного си, имхо, особой разницы между конпилерами нет, ну окромя ICL, который сам умеет все известные SSE (но он платный, и разумеется, оптимизирует исключительно под интеловские процы).

Добавлено 05-04-2013 в 22:48:

Я под виндой проекты на С торадиционно конпилю MinGW, а на С++ - десятой студией. Под линупсом только GCC.

Добавлено 05-04-2013 в 22:49:

Кстати, консольный gdb очень понравился. И gprof тоже ничего. Но опять же - только для си-кода (рейтрейсеры там всякие и тому подобное). Навороченные проекты с классами и шаблонами я таки под студией дебажу.

__________________

xaerox on Vivino


Отправлено Дядя Миша 05-04-2013 в 16:54:

Для Си - да, но там слава богу от компилятора никакого западла ждать не приходится.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 02-11-2013 в 18:13:



sqrt( 1./(8.*pi*eCGS**2)*( me*veSQUARE/ne + ma*viSQUARE/ni ) )

сместо ma стояло na. величины отличаются на ~30 порядков, причём результирующий эффект сам себя компенсирует так что заметить его очень трудно. две суток счёта коту под хвост. убейте меня кто ни будь.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 02-11-2013 в 18:31:

А вот поэтому и надо давать переменным понятные имена.
Например, m_flFrictionFraction

__________________

xaerox on Vivino


Отправлено Дядя Миша 02-11-2013 в 18:54:

XaeroX и функциям тоже. Например Sys_MonkeyShouldBeSpanked

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 02-11-2013 в 19:41:

С тех пор как начал мучить язык D, теперь в Си вставляю ассерты и пишу юниттесты, хотя на уровне языка такой поддержки нет.

Насчёт имён - XaeroX дело говорит. Понимаю, что в книжечках по матану алгоритмы наверно так и описаны, но в программировании всё-таки другие правила. И кстати, в книжках по математике из-за таких коротких названий тоже бывают ошибки, а потом сиди думай, то ли ты такой тупой, что не понимаешь, то ли просто опечатка.


Отправлено Дядя Миша 02-11-2013 в 19:54:

Цитата:
FreeSlave писал:
С тех пор как начал мучить язык D, теперь в Си вставляю ассерты и пишу юниттесты

Ну ассерты - дело нужное. У меня к примеру какой-то ассерт сработал через полтора года после написания кода.
А вот юнит-тесты занятие прямо скажем бесполезное.
Я еще могу понять, если вы написали фундаментальную функцию, типа strcpy или sincos, которая используется чуть менее чем везде и ошибка в ней способна угробить абсолютно всё. Но во всех остальных случаях оно лишь создаёт ложную иллюзию оттестированости.
Вот китайцы берут мотор от таёты, коробку от хонды, ходовку наверное сами делают по чьей-то лицензии. По отдельности всё классно, а на выходе почему-то GellyMK и прсти гспди GreatWall.
Да и все китайские разработки почему-то устроены из хороших стабильных модулей, которые кое-как вместе склеены.
Это всё очень ненадёжно. Самое надёжное тестирование - на конечных потребителях продукта. Такой подход не означает, что в продукте будут выловлены абсолютно все ошибки. Он всего лишь означает, что с ними не столкнутся конечные потребители - т.к. мы будем вылавливать именно то, на что они жалуются. Метод тоже неидеальный, но хотя бы народ доволен.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 12-11-2013 в 13:57:

Из серии "мыши кололись-давились".
Я тоже южу шестёрку. Потому что быстрая и потому что, бкьждлжд, срамная халва. Но некоторые баги в ней просто ДИКО БЕСЯТ. Например, рандомные ошибки в циклах for, когда новая переменная ВНЕЗАПНО в первой итерации принимает последнее значение.

Вообще против ошибок есть базовые приёмы:
- warning lever: over9000
- нормальные детальные имена переменных
- инициализация дефолтных значений и конструкторов классов
- ассерты (ерунда, но иногда может стать подсказкой)
- try...catch
- DBG_FORCEBREAK

Кстати, Ксайрокс, подскажи:
#ifdef _MSC_VER
#define DBG_FORCEBREAK _asm {int 3};// XDM3035
#else
#define DBG_FORCEBREAK ASSERT(0);// что вот здеся для мингвы и линуксов писать?
#endif
#else // !DEBUG

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 12-11-2013 в 14:10:

Цитата:
~ X ~ писал:
Потому что быстрая и потому что, бкьждлжд, срамная халва.

Потому что ты лентяй.
Хлфх 0.7 я преспокойно собирал в 2010 студии, и всё шикарно работало. Не надо на халфу гнать.
Цитата:
~ X ~ писал:
// что вот здеся для мингвы и линуксов писать?

Так и быть, поделюсь секретом из волатилы.
C++ Source Code:
1
#if !defined(DEBUG_BREAK)
2
#if defined(_MSC_VER)
3
#if defined(_M_X64)
4
#define DEBUG_BREAK()		__debugbreak()
5
#else
6
#define DEBUG_BREAK()		do { __asm int 3 } while( 0 )
7
#endif
8
#elif defined(__GNUC__)
9
#define DEBUG_BREAK()		__asm( "int $3\n" )
10
#endif
11
#endif

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 11:10. Страницы (4): « 1 [2] 3 4 »
Показать все 49 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024