Я пытаюсь отладить пользовательский класс C ++, включающий память, выделенную для кучи, которую я написал и собираю в Cygwin GCC / G ++. Если я запускаю свои тестовые программы, это не дает мне явного сбоя, но в конце программы появляется сообщение «Aborted (core dumped)». Я также не могу написать тестовую программу, которая даст мне ошибку, которую я могу найти с помощью Cygwin GDB. Поэтому я ищу отладчик памяти в надежде, что он поможет.
Я использую Windows, у меня нет Visual Studio, и я не хочу пытаться выяснить, как скомпилировать мою программу в другой командной строке для отладчиков, таких как Dr. Memory.
Какой отладчик памяти я могу использовать?
Я буду редактировать, если мне нужно что-то добавить.
Вы также можете использовать memwatch (отладчик памяти для C, который поддерживает C ++).
http://www.linkdata.se/sourcecode/memwatch/
РЕДАКТИРОВАТЬ: чтобы использовать memwatch, вы просто:
Поместите два файла (memwatch.h и memwatch.c или memwatch.cpp) в один каталог с исходным кодом, который вы хотите скомпилировать и протестировать.
В каждом файле .c или .cpp вашего исходного кода вы помещаете эти три строки вверху:
#include "memwatch.h"#define MW_STDIO
#define MEMWATCH
Скомпилируйте и запустите вашу программу, она вызовет сбой вашей программы (довольно громко), когда вы попытаетесь следовать неинициализированному указателю, и если программа завершится успешно, она напишет файл с именем memwatch.log с любыми утечками памяти в исходный код — а также строки, где каждая из этих частей нарушенной памяти была выделена в коде
Примечание: это то, как вы делаете это в C (и я предполагаю, что то же самое с C ++).
Вы знаете, что у вас есть неинициализированный указатель, если при его печати он равен некоторому значению, например 0xFEFEFEFEFEFEFEFE (сначала мне понадобилось несколько часов, чтобы выяснить это)
Других решений пока нет …