@ProCxx

Страница 2160 из 2477
Nik
26.06.2018
19:51:36
его можно вызывать из своего кода при креше?
Нет. А зачем? Для сервер сайда делается дамп всех крешей в системе. Для пользовательских апликух - онбордишься в WER и получаешь дампы от МС

olologin
26.06.2018
19:52:14
что такое WER?

Nik
26.06.2018
19:52:51
Windows Error Reporting

ранее известный как watson

Google
olologin
26.06.2018
19:54:58
загуглил

у нас пользователи параноики, они майкрсофту не захотят ничего отсылать :)

не все но полно таких

Nik
26.06.2018
19:55:42
Дак винда сама отсылает. Если конечно файерволами не забито все наглухо

olologin
26.06.2018
19:56:15
ну нет, винда отсылает если есть unhandled exception

а у нас таких не бывает

Nik
26.06.2018
19:56:39
А вы дампы не только на крэши делаете?

olologin
26.06.2018
19:56:51
только на SEH эксепшены

Nik
26.06.2018
19:56:56
типа как "Save file"?

olologin
26.06.2018
19:56:58
типа acces violation

Nik
26.06.2018
19:57:14
Любой креш процесса улетит в wer

можно вместо wer поставить procdump и любой креш процесса будет складироваться в отдельную папочку на машине

olologin
26.06.2018
19:57:48
насколько я понимаю даже если ты seh эксепшен захендлишь - ничего никуда не полетит

Google
olologin
26.06.2018
19:58:17
да, я вот тоже думаю что вместо писания велосипеда можно посмотреть на procdump

сейчас почитал мануалы

Nik
26.06.2018
19:58:25
Если SEH обработан и не передан дальше по цепочке - это не креш. Ничего не будет сдамплено. Это верно

olologin
26.06.2018
19:58:32
фигово что его нельзя распространять со своим продуктом

но это такое

Nik
26.06.2018
19:58:50
есть веселый способ :)

https://live.sysinternals.com/procdump64.exe

olologin
26.06.2018
20:00:59
https://github.com/Arnavion/crashdump

О нашёл пример с процессом отдельным

https://live.sysinternals.com/procdump64.exe
Ну да, ссылку можно

Вообще замечаю что кастомеры у нас многие немного неадекватные

возможно для них будет трудно даже в консоли запустить procdump с нужными ключами

вот под линуксом кастомеры прямо крутые

но там программисты годные

багрепорты сразу шлют с дампами памяти

стектрейсами

и очень подробным описанием

если что-то дополнительно нужно сразу предоставляют, даже особо обьяснять не нужно что делать

продвинутые люди

Nik
26.06.2018
20:03:31
Ну да, ссылку можно
\\live.sysinternals.com\tools\procdump.exe :)

Google
Nik
26.06.2018
20:04:28
т.е. запускать procdump.exe можно прямо из сети и ничего дистрибьютить не нужно

olologin
26.06.2018
20:04:47
я не знал что так можно :)

а как винда относится к таким запускам? Не ругается что прямо из интернета экзешники запускают?

Nik
26.06.2018
20:06:12
Оно подписано МСом :)

При инсталляции можно дернуть \\live.sysinternals.com\tools\procdump64.exe -i (естественно под опцией, чтобы пользователь мог отменить)

А вообще полезно почитать https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/enabling-postmortem-debugging

Alexey
26.06.2018
20:39:52
Хм. А ведь std::function где-то в куче хранит закапчуренные переменные? То есть очередь из std::function'ов наверно не очень хорошая идея в плане производительности?

olologin
26.06.2018
20:40:29
ну я не думаю что синхронизация происходит при обращении к памяти

она происходит при выделении/освободдении памяти

т.к внутренняя структура которую и защищают этими синхронизациями меняется только при освобождении/выделении

по крайней мере я всё так понял

Крис
26.06.2018
20:47:27
volatile int a = 3; std::cout « (a+a) « std::endl; Не могу понять, почему это UB? Какое рациональное обьяснение?

Anatoly
26.06.2018
20:49:50
имеет смысл сравнивать сравнимое

Alexey
26.06.2018
20:51:52
по сравнению с чем? с указателями на функции? конечно, только толку с того?
c очередью из std::variant'ов. то есть задача, скажем сделать очередь команд на отрисовку того, сего. круг, линию, текст вывести. можно сделать очередь отложенных действий (std::function) с аргументами, а можно очередь std::variant'ов а потом это дело разгребать через огромный switch.

Alexey
26.06.2018
20:53:13
с ООП не пробовал подходить к этой задаче?
а тут ооп будет как-то отличаться от очереди std::function'ов?

Anatoly
26.06.2018
20:53:31
а тут ооп будет как-то отличаться от очереди std::function'ов?
прозрачностью и ясностью, в отличии от функторов

Alexey
26.06.2018
20:54:09
даа.. как бы синтаксически std::function будет более читабельно и скомпоновано в паре строчек кода. с ООП будет потяжелее.

Google
Alexey
26.06.2018
20:54:57
в плане эффективности наверно рулит std::variant + swith за счет того, что можно не дергать new (явно или неявно) на каждое сообщение.

Anatoly
26.06.2018
20:56:17
в плане эффективности наверно рулит std::variant + swith за счет того, что можно не дергать new (явно или неявно) на каждое сообщение.
а чем это от идентификатора типа отличается? как ты это поддерживать будешь при добавлении нового типа в варианте?

Alexey
26.06.2018
20:57:01
добавить еще один case в switch?

Anatoly
26.06.2018
20:57:14
добавить еще один case в switch?
речь об одном месте?

Alexey
26.06.2018
20:57:42
да

и мне нужно видеть список всех возможных типов сообщений, компактно

то есть тут бы какой-нибудь алгебраический тип данных подошел бы, но в плюсах их нема

и жаль что switch нельзя сделать по варианту

нету паттерн матчинга адекватного ?

Anatoly
26.06.2018
21:01:04
нету паттерн матчинга адекватного ?
https://en.cppreference.com/w/cpp/utility/variant/visit

Alexey
26.06.2018
21:01:32
а visit стукнет по рукам если я не все варианты варианта обработал? ?

Anatoly
26.06.2018
21:02:29
а visit стукнет по рукам если я не все варианты варианта обработал? ?
у тебя на этот случай [](auto arg) { std::cout << arg << ' '; }

для неспециализированных типов

failsafe

Alexey
26.06.2018
21:03:25
ok. хотелось конечно проверки на этапе компиляции.. но ок

всегда можно тестами покрыть

Anatoly
26.06.2018
21:03:51
ok. хотелось конечно проверки на этапе компиляции.. но ок
тогда отказыжить от auto и перечисляй все типы

Alexey
26.06.2018
21:04:06
а если не все перечислю, ошибка компиляции будет?

Anatoly
26.06.2018
21:04:09
тогда получишь по рукам

Alexey
26.06.2018
21:04:44
гут. спасибо

Google
Крис
26.06.2018
21:30:51
volatile int a = 3; std::cout « (a+a) « std::endl; Не могу понять, почему это UB? Какое рациональное обьяснение?

Крис
26.06.2018
21:38:24
Ignat
26.06.2018
21:38:45
А почему Вы спрашиваете?

Крис
26.06.2018
21:38:51
Знакомый задал вопрос, почему здесь неопределенное поведение, ничего в стандарте по этому поводу найти не могу

Академический интерес

olologin
26.06.2018
21:39:39
может только если a меняют в другом месте

Крис
26.06.2018
21:41:21
volatile int a = 3; std::cout « a « std::endl; уже не UB, как мне сказали

Что-то вроде подсказки, но все равно непонятно

Vladislav
26.06.2018
21:41:57
видимо речь о том, что порядок чтений в (a + a) не определен, но это не UB в смысле стандарта

olologin
26.06.2018
21:41:59
спроси этого академика меняют ли a в другом треде

в другом треде например

Крис
26.06.2018
21:42:17
спроси этого академика меняют ли a в другом треде
Разумеется, в этом смысл ключевого слова волатайл

olologin
26.06.2018
21:42:24
ну так и всё

Крис
26.06.2018
21:42:27
Не треде, откуда-то извне

olologin
26.06.2018
21:43:01
пока его меняют не ясно какое число прочитается

изменение то может быть побайтовым

изменение int'а не атомарно

Vladislav
26.06.2018
21:43:25
https://www.beningo.com/understanding-volatile-access-warnings/

Крис
26.06.2018
21:43:53
изменение int'а не атомарно
То есть любое взаимодействие с волатайл это андефайнд бех?

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