Как отлаживать программу без IDE с++?

допустим у меня есть програмка:

int main() {
    int* array = new int[10];
}

Как обнаружить утечку памяти без использования каких-либо IDE? Ну и вообщем как производить отладку без IDE? Программа будет собрана с помощью mingw + cmake


Ответы (1 шт):

Автор решения: KoVadim

Начнем с простого. Отладка. Тут все просто. при компиляции добавляете -g или -ggdb (если как отладчик будет использоваться gdb). И теперь можно использовать любой отладчик (gdb, x64db или Windbg, который идет "как бы со студией" (на самом деле с sdk), а может даже OllyDbg - тут все индивидуально. Мне лично нравится gdb). Дальше читаете инструкцию на отладчик и все будет.

Например, если это gdb, то запуск будет такой gdb ./имябинарника. поставить точку останова - b имя функции b номер строки. run - запустить. с - продолжать выполнение. s/n - пошаговый проход. p имяпеременной - печать переменной. Этого обычно с головой хватает.

Теперь поиск утечек. Раньше с этим было чуть сложнее, но теперь все упростилось. Если gcc достаточно свежий (вроде от 4.8 и старше), то есть встроенные санитайзеры. Просто добавляете при компиляции -fsanitize=address, компилируете и запускаете. И теперь компилятор добавит немного кода (да, программа будет чуточку медленнее работать) и по ходу выполнения и в конце покажет в консоли много полезной информации - о забытом free, о использовании после освобождения, о двойном освобождении. Если отладочная информация включена, то там будут номера строк, куда стоит посмотреть. здесь можно посмотреть как это выглядит.

Ах да, ещё упоминался cmake. А он не нужен в данном случае. Ну разве что для передачи параметров компиляции. Если у Вас реально один cpp, то можно компилировать прям так в консоли.

→ Ссылка