Во-первых, компилятор
всегда указывает на ошибки и неоднозначности.
Во-вторых, не запуск с отладкой, а компиляция с отладочными символами.
В режиме отладки в собранный исполнительный бинарник добавляются специальные символы, позволяющие посмотреть, в какой функции программа завершилась аварийно. Отладочный бинарник позволяет пройти по стеку вызовов функций, выполнить каждую инструкцию процессора или C/C++-строчку по-порядку. Поставить брекпойнт и.т.д.
Подробнее тут