Я использую KDevelop для разработки и отладки C ++. Похоже, я где-то разыменовываю NULL-указатель, потому что я получаю:
*** Program received signal SIGSEGV (Segmentation fault) ***
Как я могу понять, где это произошло? Я хотел бы, чтобы KDevelop сломал эти сигналы и необработанные исключения.
Вы должны запустить приложение внутри отладчика. нажмите отлаживать кнопка в KDevelop, если у вас уже есть правильная конфигурация запуска.
В KDevelop это откроет отлаживать область просмотра и запуска приложения в GDB.
После аварии нажмите Стек кадров Вид инструмента на нижней панели.
Вот и ты.
В отличие от интерпретируемых языков, таких как Python, и языков, которые не допускают явного управления памятью и используют автоматический сбор мусора, таких как Java и C #, то, что вы запрашиваете, практически невозможно для C ++ с любым редактором. Причина этого в том, что когда создается указатель, это просто указатель на адрес памяти. Невозможно проверить, правильно ли выделена память по указанному адресу и доступна ли она до тех пор, пока человек не попытается получить доступ к памяти через указатель. В целом, существует три основных категории ошибок:
1) синтаксис (это также подкласс второго ниже)
2) время компиляции
3) время выполнения.
В первом случае большинство современных IDE смогут отловить ошибку еще до того, как вы попытаетесь скомпилировать. Это ошибки, которые возникают из-за неправильного синтаксиса.
Во втором случае эти ошибки могут быть перехвачены во время компиляции (обычно это также ошибки, возникающие из-за неправильного синтаксиса, но не только; например, доступ к статическому массиву вне диапазона приведет к этой ошибке).
В третьем случае это ошибки, которые могут быть обнаружены только во время выполнения программы. То, о чем вы спрашиваете, относится к этому типу в C ++.
Поэтому лучше всего запустить программу в режиме отладки. Отладчик, включенный в KDevelop, очень эффективен. Вы сможете явно отслеживать распределение / удаление памяти. Для получения дополнительной информации см. Здесь: http://userbase.kde.org/KDevelop4/Manual/Debugging_programs