@ProCxx

Страница 852 из 2477
Berkus
09.05.2017
13:33:19
(или N/4 интов или еще любая поебень)

когда ты кусок памяти так интерпретируешь то intel endianness превратит твой тип в фарш

Evgeniy
09.05.2017
13:34:09
Александр
09.05.2017
13:35:07
ты сказал POD и array-of-PODs, нет?
Да. std::array<double, 5> как влезет в 8 байт?

Google
Evgeniy
09.05.2017
13:35:38
Да. std::array<double, 5> как влезет в 8 байт?
ну сверху обертка еще три строки чтобы выбрать нужный элемент

Александр
09.05.2017
13:36:18
ну вот вывод на будущее: у тебя UB, у меня работает)
Я буду знать, какие тонкости могут возникнуть при реализации всяких variant, как вообще reinterpret_cast может выстрелить, и что говорить компилятору, чтобы всё было ок

ну сверху обертка еще три строки чтобы выбрать нужный элемент
http://ru.cppreference.com/w/cpp/utility/bitset ну и еще немного методов

Andrei
09.05.2017
13:36:40
Хотя ощущение такое, что и правда легче написать обёртку, которая держит референс на объект и даёт интерфейс к битам

Evgeniy
09.05.2017
13:37:49
http://ru.cppreference.com/w/cpp/utility/bitset ну и еще немного методов
тебе нужны они все, включая to_string? Формулируй яснее тогда

потому что я понял что нужные операции с битами, т.е. set, reset, flip

Александр
09.05.2017
13:38:18
тебе нужны они все, включая to_string? Формулируй яснее тогда
Я сразу сформулировал. Мне нужна обертка для работа с битами

to_string - конечно. Для отладки не помешает

Evgeniy
09.05.2017
13:39:17
to_string - конечно. Для отладки не помешает
а тип в котором данные лежат распечатать нельзя?

Александр
09.05.2017
13:39:33
Evgeniy
09.05.2017
13:39:34
to_string - конечно. Для отладки не помешает
и вообще, ты что, дебажишь принтами?

Александр
09.05.2017
13:39:58
и вообще, ты что, дебажишь принтами?
Не придирайся. Логгирование никто не отменял

Google
Alexander
09.05.2017
13:44:18
и вообще, ты что, дебажишь принтами?
а что ты имеешь против дебага принтфами??

Alexander
09.05.2017
13:46:26
gdb
Удачи отлаживать многопоточный код ?

который взаимодействует с системными процессами, в которые не залезешь дебаггером

у меня был пренеприятнейший опыт, и только принтфы спасли

Berkus
09.05.2017
13:47:31
anecdotal evidence?

Evgeniy
09.05.2017
13:53:04
у меня был пренеприятнейший опыт, и только принтфы спасли
конечно есть разные ситуации, но большинство людей используют принты потому что могут, а не потому что по другому никак

Alexander
09.05.2017
13:53:41
ovf
09.05.2017
13:54:37
принтфы рулят. можно ещё пописать своих принтфов. например, (раз уж у вас тут у всех c++) для сложных выражений очень полезна функция типа template<typename t>t debug_print(const char*s,t x){std::cerr<<s<<": "<<x<<"\n";return x;}. можно использовать в середине любого выражения, обернув то, что хочется вывести в debug_print(...). bonus points -- #define debug_print(x) debug_print(#x,x)

Andrei
09.05.2017
14:04:18
Принтфы запросто ломают воспроизведение бага.

А вот assert-ы куда менее инвазивны

ovf
09.05.2017
14:05:32
извини, а чем assert отличается от printf(int)?

Andrei
09.05.2017
14:07:00
тем что printf запустит огромную машинерию про преобразования твоего инта в строку, потом запись в консоль и пошло поехало. Огромные задержки. Многопоточные баги запросто перестанут воспроизводиться. А ассёрт, это просто проверка условия и если фейл, то сразу INT 3

Гораздо менее инвазивно, я же сказал.

Grigor
09.05.2017
14:07:36
надо чтобы на гонках не работало и тогда отлаживаться принтами ок

ovf
09.05.2017
14:07:52
int 3 -- то есть у тебя к процессу подключён дебаггер. и что там про инвазивность?

Grigor
09.05.2017
14:07:53
и чепятать надо в другом треде

тогда и гонка ок воспроизводится

Andrei
09.05.2017
14:08:42
int 3 -- то есть у тебя к процессу подключён дебаггер. и что там про инвазивность?
у меня на винде есть ::DebugBreak, и отладчик можно на лету подключить.

Grigor
09.05.2017
14:08:57
у меня нет винды ;D

Google
Andrei
09.05.2017
14:09:03
И вообще в целом на винде гораздо комфортнее отлаживаться в студийном дебагере, по сравнению с gdb

На линуксах я бы еще подумал. Но всё равно, я предпочитаю отладку assert-ами

Grigor
09.05.2017
14:09:33
в силайоне же вроде бы приличное что-то для отладки наворотили?

ovf
09.05.2017
14:09:48
не понял, при чём тут винда.

Andrei
09.05.2017
14:10:00
в силайоне же вроде бы приличное что-то для отладки наворотили?
Может быть сейчас и наворотили, но к тому моменту, когда я его дропнул, там было отвратно.

Alexander
09.05.2017
14:10:18
Andrei
09.05.2017
14:10:20
не понял, при чём тут винда.
При том, что у студии отличный отладчик.

Grigor
09.05.2017
14:10:24
ну у меня в нем и проект-то не собирался ;D

Evgeniy
09.05.2017
14:10:34
может через пару лет, если тщательно репортить и фичреквестить

ovf
09.05.2017
14:10:49
и у этого отличного отладчика какой-то отличный от других оверхед?

Grigor
09.05.2017
14:10:52
принты ван лав

Andrei
09.05.2017
14:11:16
и у этого отличного отладчика какой-то отличный от других оверхед?
Ты сейчас обсуждаешь printf vs debug или ищешь очередной повод прикопаться к так называемым проблемам со студией? :D

Grigor
09.05.2017
14:11:47
кстати, аргумент за принты, иногда с дебажными символами просто невозможно собрать проект, линкер берет и говорит тебе oom

Дед Пегас
09.05.2017
14:12:30
У студийного отладчика есть один очень крупный плюс — он не тормозит на ооочень больших файлах.

Andrei
09.05.2017
14:12:33
и у этого отличного отладчика какой-то отличный от других оверхед?
Какая разница, какой у отладчика оверхед, скажи мне? Под отладкой у тебя и так всё остановлено и ты пристально разглядываешь монитор.

ovf
09.05.2017
14:12:34
по моим ощущениям, мы обсуждаем (зачем-то, мне эта тема не то чтобы сильно интересна) сравнительный оверхед printf и подключённого дебаггера

Дед Пегас
09.05.2017
14:12:37
С gdb приходится изгаляться.

Google
Grigor
09.05.2017
14:13:06
докинь плашку
не помогает, линкеру разрядности не хватает)

ovf
09.05.2017
14:13:10
какое отношение символы имеют к отладчику?

Andrei
09.05.2017
14:13:37
по моим ощущениям, мы обсуждаем (зачем-то, мне эта тема не то чтобы сильно интересна) сравнительный оверхед printf и подключённого дебаггера
Ты, видимо, проигнорировал то, что я написал. assert внутри себя вызывает debugbreak и только тогда ты подключаешь отладчик.

Evgeniy
09.05.2017
14:13:44
ovf
09.05.2017
14:14:13
по-моему, мы разные вещи называем "подключением"

Admin
ERROR: S client not available

Grigor
09.05.2017
14:14:19
в студии 32-битный линкер? ?
got no idea about vs. а у нас есть реальные платформы, где надо собирать 32 тулчейном и с дебажными символами там oom

Andrei
09.05.2017
14:14:23
Ага помню, у кого-то пробелмы были собрать 65536 объектников :D

ovf
09.05.2017
14:14:44
чтобы по int 3 произошло что-то хорошее, твой процесс уже должен выполняться под управлением отладчика

Evgeniy
09.05.2017
14:14:46
Andrei
09.05.2017
14:15:03
Естественно там не int 3

>тем что printf запустит огромную машинерию про преобразования твоего инта в строку, потом запись в консоль и пошло поехало. Огромные задержки. Многопоточные баги запросто перестанут воспроизводиться. А ассёрт, это просто проверка условия и если фейл, то сразу break

ovf
09.05.2017
14:16:18
break куда?

если отладчика нет

Google
ovf
09.05.2017
14:17:25
хинт: перед printf можно тоже проверить условие, если хочется

Andrei
09.05.2017
14:17:42
Не уверен как на линуксе, но на винде можно на лету подключить отладчик

ovf
09.05.2017
14:18:05
как ты догадываешься, это очень даже не бесплатно

если ты готов сколько угодно потратить времени на такое, у тебя точно есть время напечатать на экран

Andrei
09.05.2017
14:19:07
Печать на экран — это всегда недостаточно. Мне надо посмотреть на стек, мне надо посмотреть в переменные.

Одним лишь принтом получить информацию о стейте программы — тяжело.

Berkus
09.05.2017
14:19:36
печатай стектрейсы

Александр
09.05.2017
14:19:42
Вместе с @berkus разобрались в тонкостях стандартной библиотеки и выявили суть бага :) и дело не в оптимизациях компилятора, а в конкретной реализации bitset с некоторыми хитростями. За объяснение ему огромное спасибо

Alexander
09.05.2017
14:19:47
на линуксе тоже можно

ovf
09.05.2017
14:20:07
напомню то утверждение, которое мы обсуждаем

Принтфы запросто ломают воспроизведение бага.

А вот assert-ы куда менее инвазивны

Andrei
09.05.2017
14:20:11
печатай стектрейсы
Об этом и речь, что если я буду печатать стектрейсы — я поменяю профиль нагрузки.

Alexander
09.05.2017
14:20:36
а для стектрейсов нам подходит... Boost.Stacktrace :)

Andrei
09.05.2017
14:21:07
а для стектрейсов нам подходит... Boost.Stacktrace :)
Отлично! у меня приложение без 3rd party, давайте в него еще буст притараканим для отладки :D

Berkus
09.05.2017
14:22:10
надо было сразу буст использовать!

ovf
09.05.2017
14:22:32
а когда в c++ добавят до кучи гуй, приложения на этом ужасе тоже будут "без 3rd party"?

ovf
09.05.2017
14:26:33
зачем мне его ждать?

Страница 852 из 2477