Ошибка сегментации с использованием LLDB - PullRequest
0 голосов
/ 09 февраля 2020

Когда я отлаживал свой файл. c, используя lldb на терминале для Ма c, я не мог найти местоположение ошибки сегментации. Я много раз отлаживал код, и он до сих пор выдает ту же ошибку. Может ли кто-нибудь помочь мне, почему я могу найти место сбоя сегментации. введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Используйте команду bt в lldb для просмотра стека вызовов. Вы вызвали функцию lib c, например scanf(), и, скорее всего, передаете ей неверный аргумент. Когда вы увидите стек вызовов, вы увидите кадр стека с вашим собственным кодом, скажем, это кадр № 3. Вы можете выбрать этот кадр с помощью f 3 и просмотреть переменные с помощью команды v, чтобы понять, какие аргументы были переданы в функцию lib c, которая привела к cra sh.

0 голосов
/ 09 февраля 2020

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

Из краткого руководства попробуйте valgrind --leak-check=yes myprog arg1 arg2

...