Как отследить/устранить связанную с памятью проблему в большом коде C/C++ *, отклоняют системы

screen, tmux, или dtach (возможно с dvtm) все великое для этого, но если это - что-то, где Вы не думали для использования одного из тех, Вы можете усиливать nohup.

9
19.03.2011, 19:22
5 ответов

Если можно изменить исходный код, Dmalloc является большим; это перечислит, какие указатели были не освобождены и (для кода, созданного с отладочной информацией) точно, на какой строке они были выделены.

Если Вы не можете, Valgrind быть в значительной степени стандартом для такой вещи. Я обычно нахожу, что Valgrind несколько тяжелее использует, но он имеет путь больше функций и не включает добавление dmalloc вызовы в Ваш код

12
27.01.2020, 20:04
  • 1
    dmalloc не очень производителен как ожидалось в очень больших системах. valgrind является лучшей ставкой, и даже там Вы поразите узкие места... –   11.08.2010, 17:33
  • 2
    valgrind - инструмент memcheck "yourapp" даст связанную с памятью информацию во времени выполнения (полезный в настольных системах). Другой большой инструмент является memwatch, но он должен быть скомпилирован наряду с Вашим источником. Memwatch может зарегистрировать детали в файл, следовательно более подходящий для встроенных систем. –  rajaganesh87 19.03.2011, 19:35

valgrind удивительно полезен.

7
27.01.2020, 20:04

Горный массив (от valgrind) является одним из лучшего способа найти утечки памяти. Повторите свой подозрительный код (или запускайте Вашу программу достаточно долго), и выведите результат с ms_print. Обычно, стек вызовов дает Вам достаточно информации для фиксации его.

С GDB можно попытаться присоединить к под управлением программе и вызвать функции такой как malloc_stats()

Если Ваша программа записана на другом языке, это могло бы быть более хитро. Недавно, некоторый GDB получил scriptability, и люди запустили интересные проекты, такие как gdb-"куча-", которая может проанализировать память Python от дампа ядра. Подобные аналитические сценарии памяти могли бы быть возможны для объектов C++.

Читайте также https://stackoverflow.com/questions/2564752/examining-c-c-heap-memory-statistics-in-gdb

2
27.01.2020, 20:04

Для Соляриса существует несколько инструментов, перечисленных в ответах на этот вопрос о StackOverflow (они включают утечку, сверяющуюся с другими формами плохого доступа к памяти).

1
27.01.2020, 20:04

Я делал Objective C в течение некоторого времени, и существует анализатор, которые имеют дело с управлением памятью уровня C и материалом как этот. Лязгайте Статический Анализатор так хорош, что Apple решила связать его их IDE XCode. Я не уверен, хорошо ли это для Вашего вопроса, но если Вы делаете C затем, это стоит попытки.

1
27.01.2020, 20:04
  • 1
    Незначительный каламбур: лязг был разработан для использования в XCode от запуска. Посмотрите clang.llvm.org/clang_video-05-25-2007.html –  Daniel James 11.08.2010, 13:26
  • 2
    Привет Daniel, который мог бы быть верным, но это не было включено в XCode до недавнего времени (или по крайней мере не в пакете, который я загрузил с Apple) –  phunehehe 11.08.2010, 16:48

Теги

Похожие вопросы