Windows — Есть ли бесплатный отладчик памяти для программ на C ++, скомпилированных с Cygwin GCC?

Я пытаюсь отладить пользовательский класс C ++, включающий память, выделенную для кучи, которую я написал и собираю в Cygwin GCC / G ++. Если я запускаю свои тестовые программы, это не дает мне явного сбоя, но в конце программы появляется сообщение «Aborted (core dumped)». Я также не могу написать тестовую программу, которая даст мне ошибку, которую я могу найти с помощью Cygwin GDB. Поэтому я ищу отладчик памяти в надежде, что он поможет.

Я использую Windows, у меня нет Visual Studio, и я не хочу пытаться выяснить, как скомпилировать мою программу в другой командной строке для отладчиков, таких как Dr. Memory.

Какой отладчик памяти я могу использовать?

Я буду редактировать, если мне нужно что-то добавить.

0

Решение

Вы также можете использовать memwatch (отладчик памяти для C, который поддерживает C ++).

http://www.linkdata.se/sourcecode/memwatch/

РЕДАКТИРОВАТЬ: чтобы использовать memwatch, вы просто:

  1. Поместите два файла (memwatch.h и memwatch.c или memwatch.cpp) в один каталог с исходным кодом, который вы хотите скомпилировать и протестировать.

  2. В каждом файле .c или .cpp вашего исходного кода вы помещаете эти три строки вверху:

    #include "memwatch.h"#define MW_STDIO
    #define MEMWATCH
    
  3. Скомпилируйте и запустите вашу программу, она вызовет сбой вашей программы (довольно громко), когда вы попытаетесь следовать неинициализированному указателю, и если программа завершится успешно, она напишет файл с именем memwatch.log с любыми утечками памяти в исходный код — а также строки, где каждая из этих частей нарушенной памяти была выделена в коде

Примечание: это то, как вы делаете это в C (и я предполагаю, что то же самое с C ++).

Вы знаете, что у вас есть неинициализированный указатель, если при его печати он равен некоторому значению, например 0xFEFEFEFEFEFEFEFE (сначала мне понадобилось несколько часов, чтобы выяснить это)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector