|
|
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Здравствуйте эксперты Задача - написать свой умный указатель - наследник std::unique_ptr с тем чтоб можно было при освобождении памяти не удалять, а возвращать ее в пул. Все работает - однако не получается положить pool_ptr в std::vector - какая та ругань на конструкторы перемещения. Подскажите плиз - как это правильно делается. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. note: copy constructor is implicitly deleted because 'unique_ptr<t, std::__1::default_delete<t> >' has a user-declared move constructor unique_ptr(unique_ptr&& __u) noexcept ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 21:06 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. error: call to implicitly-deleted copy constructor of 'pool_ptr<t, std::__1::default_delete<t> >' ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...); in instantiation of function template specialization 'std::__1::vector<pool_ptr<t, std::__1::default_delete<t> >, std::__1::allocator<pool_ptr<t, std::__1::default_delete<t> > > >::emplace_back<pool_ptr<t, std::__1::default_delete<t> > >' requested here pool->emplace_back(std::move(ptr)); ^ note: copy constructor of 'pool_ptr<t, std::__1::default_delete<t> >' is implicitly deleted because base class 'std::unique_ptr<t, default_delete<t> >' has a deleted copy constructor class pool_ptr : public std::unique_ptr<_Tp, _Dp> { ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 21:09 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenЗадача - написать свой умный указатель - наследник std::unique_ptr с тем чтоб можно было при освобождении памяти не удалять, а возвращать ее в пул. Для этого не надо писать наследника, достаточно скормить обычному unique_ptr свой аллокатор. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 22:00 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenЗадача - написать свой умный указатель - наследник std::unique_ptr с тем чтоб можно было при освобождении памяти не удалять, а возвращать ее в пул. Для этого не надо писать наследника, достаточно скормить обычному unique_ptr свой аллокатор. Я знаю Но я вношу изменения в большой проект в котором на простом unique_ptr уже понаписана уйма кода и менять в шаблоне аллокатор - адовый геморой Вот решил просто отнаследоваться и переопределить деструктор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 22:03 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenВот решил просто отнаследоваться и переопределить деструктор Тогда переопределяй не деструктор, а оператор delete у класса, который пулится. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 22:04 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenВот решил просто отнаследоваться и переопределить деструктор Тогда переопределяй не деструктор, а оператор delete у класса, который пулится. А можно поподробнее ? Никогда этого не делал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 22:09 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 23:06 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Код: sql 1. 2. 3. 4. 5. 6. 7. 8. А если пулится char[] ? И глобально для него делать оператор delete не вариант ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2018, 23:08 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
[quot semen.s.semen]Здравствуйте эксперты Задача - написать свой умный указатель - наследник std::unique_ptr с тем чтоб можно было при освобождении памяти не удалять, а возвращать ее в пул. Все работает - однако не получается положить pool_ptr в std::vector - какая та ругань на конструкторы перемещения. Вроде бы для этого не нужен совсем наследник unique_ptr. unique_ptr сохраняет так называемый делитор, который будет вызван для удаления памяти. По умолчанию это вызов delete или delete [] в зависимости от типа созданного объекта, но там может быть любая функция. Соответственно остаётся только задать эту функцию, а в ней не удалять объект, а помещать в пул памяти. тАкже надо будет определить operator new, чтобы брать память из пула ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 00:10 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Повторю 1) Делетор подменить не получится unique_ptr расбросан по тыще мест и везде дилитор я подменить не могу 2) Пулятся char[] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 00:12 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenА если пулится char[] ? Пул для chаr[] это стандартный менеджер памяти. Ты не сможешь продублировать его функциональность в улучшенном варианте. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 13:24 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenerror: call to implicitly-deleted copy constructor of 'pool_ptr<t, std::__1::default_delete<t> >' ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...); Добавьте еще эти конструкторы, чтобы реализовать move-семантику (copy-семантика не поддерживается в базовом unique_prt, поэтому ее нет смысла пытаться делать). Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 14:15 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Хотя как выше сказали, наследование здесь не нужно. Вот то же самое как правильно ))) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 14:25 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyнаследование здесь не нужно. Ну вот, лишил ТСа часов отладки и биения головой об стену... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 14:36 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenА если пулится char[] ? Пул для chаr[] это стандартный менеджер памяти. Ты не сможешь продублировать его функциональность в улучшенном варианте. У нас страшно течет RSS хотя утечек Valgrind не показывает Хочу вместе аллокации - деаллокации испольщовать пул чар-массивов Это будет лучше чем то что сейчас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 20:10 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskysemen.s.semenerror: call to implicitly-deleted copy constructor of 'pool_ptr<t, std::__1::default_delete<t> >' ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...); Добавьте еще эти конструкторы, чтобы реализовать move-семантику (copy-семантика не поддерживается в базовом unique_prt, поэтому ее нет смысла пытаться делать). Код: plaintext 1. 2. А почему move конструкторы не отнаследовались от std::unique_ptr ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 20:11 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenУ нас страшно течет RSS хотя утечек Valgrind не показывает Хочу вместе аллокации - деаллокации испольщовать пул чар-массивов Значит у вас копятся не освобождённые ресурсы. Пул тут не поможет, только отладка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 20:15 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenУ нас страшно течет RSS хотя утечек Valgrind не показывает Хочу вместе аллокации - деаллокации испольщовать пул чар-массивов Значит у вас копятся не освобождённые ресурсы. Пул тут не поможет, только отладка. Вот тут пишут что необязательно https://stackoverflow.com/questions/23077525/resident-memory-increase-while-valgrind-not-showing-any-leaks И пулирование как раз спасает от такого Монитор памяти показывает что у нас очень часто аллоцируется - освобождается пара мелких буферов по 8кб При стресс тестирование суммарно капает под несколько гигов - хотя реально там меньше мегабайта надо Хочу облегчить операционке жизнь и посмотреть будет ли после этого течь RSS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 20:18 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenА почему move конструкторы не отнаследовались от std::unique_ptr ? https://en.cppreference.com/w/cpp/language/move_constructor авторImplicitly-declared move constructor If no user-defined move constructors are provided for a class type (struct, class, or union), and all of the following is true: - there are no user-declared copy constructors; - there are no user-declared copy assignment operators; - there are no user-declared move assignment operators; - there are no user-declared destructors; - the implicitly-declared move constructor is not defined as deleted due to conditions detailed in the next section then the compiler will declare a move constructor as a non-explicit inline public member of its class with the signature T::T(T&&). У вас деструктор объявлен, поэтому неявного move- не было. А наследование тут не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 20:34 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskysemen.s.semenА почему move конструкторы не отнаследовались от std::unique_ptr ? https://en.cppreference.com/w/cpp/language/move_constructor авторImplicitly-declared move constructor If no user-defined move constructors are provided for a class type (struct, class, or union), and all of the following is true: - there are no user-declared copy constructors; - there are no user-declared copy assignment operators; - there are no user-declared move assignment operators; - there are no user-declared destructors; - the implicitly-declared move constructor is not defined as deleted due to conditions detailed in the next section then the compiler will declare a move constructor as a non-explicit inline public member of its class with the signature T::T(T&&). У вас деструктор объявлен, поэтому неявного move- не было. А наследование тут не причем. Спасибо - теперь ясно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 20:36 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenВот тут пишут что необязательно SO, конечно, хороший ресурс, но даже там попадаются странные ответы. Особенно на странные вопросы. Если valgring не показывает тебе утечку, то вариантов два: 1. Память не потеряна, она по-прежнему где-то внутри твоей программы отслеживается. В этом случае поможет только долгая и тщательная отладка. 2. Ты как-то неправильно им пользуешься. Первый случай гораздо вероятнее. Так что включай мозг и начинай анализировать свою программу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 22:12 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenВот тут пишут что необязательно SO, конечно, хороший ресурс, но даже там попадаются странные ответы. Особенно на странные вопросы. Если valgring не показывает тебе утечку, то вариантов два: 1. Память не потеряна, она по-прежнему где-то внутри твоей программы отслеживается. В этом случае поможет только долгая и тщательная отладка. 2. Ты как-то неправильно им пользуешься. Первый случай гораздо вероятнее. Так что включай мозг и начинай анализировать свою программу. Программа не моя Это внешний OpenSource продукт - очередное Г Пулирование - это просто способ проверить поведение если убрать эту аллокацию - деаллокацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 22:21 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov1. Память не потеряна, она по-прежнему где-то внутри твоей программы отслеживается. В этом случае поможет только долгая и тщательная отладка. Ага еще скажи - бага в мониторе памяти. Ясно вижу что аллоцируемая память - освобождается. А вот почему при это RSS растет - есть тайна превеликая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 22:24 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
The heap is part of your "res" memory, so if you have something that allocates x MB of heap memory, then releases it, unless the OS actually need that memory for other purposes, it will remain as part of your applications memory. (Actually, it's quite a bit more complex than that, but for this discussion, this picture is valid). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 22:29 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Никто не отменял фрагментацию кучи, при которой память растет, а утечки нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 23:06 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНикто не отменял фрагментацию кучи, при которой память растет, а утечки нет. Вот вот Поэтому и родилась идея посмотреть как ведет себя RSS если два участка памяти активно аллоцирующие char[] и кладущие его в std::unique_ptr заменить пулированием. Думаю что это и производительность может поднять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 23:08 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Проблема тока в том что там этот unique_ptr из данного класса передается еще в 1000 мест и просто подменить Deleter не вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 23:09 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenПулирование - это просто способ проверить поведение если убрать эту аллокацию - деаллокацию. Как я уже сказал выше: пул автоматически ведёт стандартный менеджер памяти. Твои пляски с бубном просто повторят его действия, но ничего не изменят. Инструменты в том топике, кстати, неплохие подсказали. Но они тоже вряд ли помогут. Так что придётся-таки ручками и головой понимать почему в россии не делают опенсорса. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 23:17 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКак я уже сказал выше: пул автоматически ведёт стандартный менеджер памяти. Твои пляски с бубном просто повторят его действия, но ничего не изменят. Это не так Отдавать в конкретную точку заранее преаллоцированные char[] или брать их из хипа - это 2 разные вещи Dimitry SibiryakovТак что придётся-таки ручками и головой понимать почему в россии не делают опенсорса. Завязывай хамить. Я с тобой тут предельно уважительно общаюсь - но могу и по другому - боюсь правда опять забанят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2018, 23:24 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenОтдавать в конкретную точку заранее преаллоцированные char[] или брать их из хипа - это 2 разные вещи Одинаковые. В хипе точно такие же цепочки "преаллоцированных char[]" из которых ММ выбирает самую подходящую. Я бы на твоём месте натравил на программу DrMemory, подождал пока она отъест память и сбросил полный дамп выделенных блоков. Портянка будет километрового размера, но за пару дней ты наверняка выяснишь с точностью до строчки кода где выделяется лишняя память. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 01:21 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenОтдавать в конкретную точку заранее преаллоцированные char[] или брать их из хипа - это 2 разные вещи Одинаковые. В хипе точно такие же цепочки "преаллоцированных char[]" из которых ММ выбирает самую подходящую. Я бы на твоём месте натравил на программу DrMemory, подождал пока она отъест память и сбросил полный дамп выделенных блоков. Портянка будет километрового размера, но за пару дней ты наверняка выяснишь с точностью до строчки кода где выделяется лишняя память. Для начала посмотрим как оно себя поведет с пулированием Монитор памяти должен будет показать кто аллоцирует память теперь Две данные точки ее больше аллоцировать не будут и в топ всплывет кто то еще Не может РСС с такой скоростью рести без достаточно больших аллокаций А большией аллокации как показывает монитор памяти возникают в этих 2 точках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 07:17 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenПовторю 1) Делетор подменить не получится unique_ptr расбросан по тыще мест и везде дилитор я подменить не могу 2) Пулятся char[] Код по-любому надо перекомпилировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2018, 11:09 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
jemalloc попробуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2018, 01:12 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
a guestjemalloc попробуй Попробывал export MALLOC_CONF=prof:true,lg_prof_interval:1,lg_prof_sample:17,prof_final:true,prof_prefix:/repos/jprof export LD_PRELOAD=/usr/local/Cellar/jemalloc/5.1.0/lib/libjemalloc.dylib ./my_programm ожидаю <jemalloc>: Leak summary: 267184 bytes, 473 objects, 20 contexts <jemalloc>: Run jeprof on "jeprof.19678.0.f.heap" for leak detail однако ничего нет вызов je_malloc_stats_print из С кода работает и печатает что оно jemalloc может кто знает почему не создается .heap файл ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 20:06 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenможет кто знает почему не создается .heap файл ? Наиболее вероятные причины: 1) Он создаётся не там, где ты думаешь; 2) На место, где он пытается создаться, у тебя нет прав. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 20:16 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenможет кто знает почему не создается .heap файл ? Наиболее вероятные причины: 1) Он создаётся не там, где ты думаешь; 2) На место, где он пытается создаться, у тебя нет прав. А как задать путь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 20:20 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
sudo my_programm не помог <jemalloc>: Leak summary: 267184 bytes, 473 objects, 20 contexts <jemalloc>: Run jeprof on "jeprof.19678.0.f.heap" for leak detail в out не вижу тут что то другое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 20:23 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Товарищи эксперты - я это сделал Однако в результирущем pdf вместо имен методов - адреса добавил --add_lib= все равно адреса подскажите плиз как заставить в итоговом репорте печаться имена методов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 21:36 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenподскажите плиз как заставить в итоговом репорте печаться имена методов Собирать с отладочной информацией нужного формата. А можно пойти другим путём: при сборке сгенерировать map-файл и по нему к адресам искать имена. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 23:05 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenподскажите плиз как заставить в итоговом репорте печаться имена методов Собирать с отладочной информацией нужного формата. А можно пойти другим путём: при сборке сгенерировать map-файл и по нему к адресам искать имена. Подскажите - а какие ключики нужны для сборки ? и как генерировать map-файл ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2018, 23:36 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semen, ld ... -M ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 03:08 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
-Wl,-Map=output.map Добавил в опцию линкера в мап файл - не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 13:00 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenДобавил в опцию линкера в мап файл - не работает Теперь надо запустить линкер. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 14:14 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenДобавил в опцию линкера в мап файл - не работает Теперь надо запустить линкер. Говорю же в MakeFile добавляю EXTRA_LDFLAGS = "-Xlinker -assert -Xlinker -Map=output.map" Все как тут написали https://stackoverflow.com/questions/7221141/any-difference-between-wl-option-and-xlinker-option-syntax-for-gcc не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 14:21 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenне работает Что "не работает"? Файл output.map не создаётся или какую вообще "работу" ты ожидаешь? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 14:24 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Да output.map не создается Я указываю у себя точный абсолютный путь /folder/output.map ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 14:26 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenДа output.map не создается После изменения MakeFile ты запускал make? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 14:43 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenДа output.map не создается После изменения MakeFile ты запускал make? Открываю man ld -map map_file_path Writes a map file to the specified path which details all symbols and their addresses in the output image. Добавляю в конфиги -Wl,-map /folder/out.map Запускаю Makefile:177: Warning: /folder/out.map dont exist Makefile:177: Warning: /folder/out.map dont exist ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 14:50 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semen-map map_file_path Writes a map file to the specified path which details all symbols and their addresses in the output image. Это какой ld? У обычного GNU такой опции нет. Если твой линкер хочет "path", так и давай ему путь. Без названия файла. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 15:12 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semen-map map_file_path Writes a map file to the specified path which details all symbols and their addresses in the output image. Это какой ld? У обычного GNU такой опции нет. Если твой линкер хочет "path", так и давай ему путь. Без названия файла. Это MacOs ld(1) BSD General Commands Manual ld(1) NAME ld -- linker SYNOPSIS ld files... [options] [-o outputfile] DESCRIPTION The ld command combines several object files and libraries, resolves references, and produces an ouput file. ld can produce a final linked image (executable, dylib, or bundle), or with the -r option, produce another object file. If the -o option is not used, the output file produced is named "a.out". Darwin March 7, 2011 Darwin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 16:06 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Такс LIBOBJECTS = $(LIB_SOURCES:.cc=.o) LIB_SOURCES это список cpp-шке Подскажите как вывести на экран g++ команду - которая генерирует объектный файл .a собирается командой ar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 20:21 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Правильно я понимаю что при сборке .a статической либы линке не вызывается вообще ? А вызывается он при сборке финального исполняемого бинарника ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 20:50 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenПравильно я понимаю что при сборке .a статической либы линке не вызывается вообще ? Статические либы собираются утилитой ar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 21:04 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenПодскажите как вывести на экран g++ команду - которая генерирует объектный файл Обычно задаются обратным вопросом: "как при сборке спрятать команды, запускаемые make". Без дополнительных ухищрений они как раз вываливаются на экран при сборке. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 21:12 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenподскажите плиз как заставить в итоговом репорте печаться имена методов Собирать с отладочной информацией нужного формата. А можно пойти другим путём: при сборке сгенерировать map-файл и по нему к адресам искать имена. Так map-файл собрал Подскажите пожалуйста - а как собирать с отладочной информацией нужного формата ? То есть чтобы jeprof автоматически бы генерировал pdf-ку с именами методов а не адресами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 22:25 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenПодскажите пожалуйста - а как собирать с отладочной информацией нужного формата ? То есть чтобы jeprof автоматически бы генерировал pdf-ку с именами методов а не адресами Подсказки в документации к этому jeprof-у, о котором лично я первый раз слышу, ты уже искал?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 23:08 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenПодскажите пожалуйста - а как собирать с отладочной информацией нужного формата ? То есть чтобы jeprof автоматически бы генерировал pdf-ку с именами методов а не адресами Подсказки в документации к этому jeprof-у, о котором лично я первый раз слышу, ты уже искал?.. https://github.com/jemalloc/jemalloc/wiki/Use-Case:-Leak-Checking искал пришлось в сишный код jemalloc лесть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2018, 23:11 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Наблюдаю странную картину Адреса которые сдампились в отчет не находятся в map файле линкера Что не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:36 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
semen.s.semenЧто не так ? Вероятнее всего - или они из другого модуля или ты не учитываешь релокацию на другой базовый адрес. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:46 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Ну, конечно, ещё возможен самый тупой вариант, что ты ищешь на полное совпадение адреса. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:47 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsemen.s.semenЧто не так ? Вероятнее всего - или они из другого модуля или ты не учитываешь релокацию на другой базовый адрес. А как найти правильный модуль ? И как правильно искать по адресам ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2018, 14:50 |
|
||
|
Пул на базе unique_ptr
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov... Вот здесь точно описана моя проблема. http://codearcana.com/posts/2016/07/11/arena-leak-in-glibc.html Отсюда следует что пул на базе char * это отличная идея - поскольку предотвращает утечку в аренах. Переход на JeMalloc другая отличная идея. Также отсюда следует что фраза "Включи мозг безмозглый Семен - char * не пулируют" было пустым эмоциональным флудом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2019, 07:39 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2017688]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 511ms |

| 0 / 0 |
