Вы можете включить списки в компиляторе и указать компоновщику создать файл карты.Файл карты даст вам значение абсолютных адресов вплоть до функции, в которой возникла проблема, а листинг поможет вам точно определить точное местоположение исключения в функции.
Например, в gcc
вы можете сделать
gcc -Wa,-a,-ad -c foo.c > foo.lst
, чтобы создать листинг в файле foo.lst
.
-Wa,
отправляет следующие параметры ассемблеру (gas
).
-a
указывает gas
создать листинг на стандартном выводе.
-ad
указывает gas
пропускать директивы отладки, которые в противном случае добавили бы много беспорядка.
опция для компоновщика GNU для создания файла карты: -M
или --print-map
.Если вы связываетесь с gcc
, вам нужно передать параметр компоновщику с параметром, начинающимся с -Wl,
, например -Wl,-M
.
В качестве альтернативы вы также можете запустить свое приложение в отладчике (например, gdb
) и посмотрите на дамп стека после сбоя с помощью команды bt
.