Как я могу увидеть, где я могу ссылаться на нулевой указатель с помощью KDevelop?

Я использую KDevelop для разработки и отладки C ++. Похоже, я где-то разыменовываю NULL-указатель, потому что я получаю:

*** Program received signal SIGSEGV (Segmentation fault) ***

Как я могу понять, где это произошло? Я хотел бы, чтобы KDevelop сломал эти сигналы и необработанные исключения.

0

Решение

Вы должны запустить приложение внутри отладчика. нажмите отлаживать кнопка в KDevelop, если у вас уже есть правильная конфигурация запуска.

В KDevelop это откроет отлаживать область просмотра и запуска приложения в GDB.
После аварии нажмите Стек кадров Вид инструмента на нижней панели.

Вот и ты.

1

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

В отличие от интерпретируемых языков, таких как Python, и языков, которые не допускают явного управления памятью и используют автоматический сбор мусора, таких как Java и C #, то, что вы запрашиваете, практически невозможно для C ++ с любым редактором. Причина этого в том, что когда создается указатель, это просто указатель на адрес памяти. Невозможно проверить, правильно ли выделена память по указанному адресу и доступна ли она до тех пор, пока человек не попытается получить доступ к памяти через указатель. В целом, существует три основных категории ошибок:

1) синтаксис (это также подкласс второго ниже)

2) время компиляции

3) время выполнения.

В первом случае большинство современных IDE смогут отловить ошибку еще до того, как вы попытаетесь скомпилировать. Это ошибки, которые возникают из-за неправильного синтаксиса.

Во втором случае эти ошибки могут быть перехвачены во время компиляции (обычно это также ошибки, возникающие из-за неправильного синтаксиса, но не только; например, доступ к статическому массиву вне диапазона приведет к этой ошибке).

В третьем случае это ошибки, которые могут быть обнаружены только во время выполнения программы. То, о чем вы спрашиваете, относится к этому типу в C ++.

Поэтому лучше всего запустить программу в режиме отладки. Отладчик, включенный в KDevelop, очень эффективен. Вы сможете явно отслеживать распределение / удаление памяти. Для получения дополнительной информации см. Здесь: http://userbase.kde.org/KDevelop4/Manual/Debugging_programs

1

По вопросам рекламы [email protected]