Почему GDB не находит никаких символов отладки, хотя у меня есть -g на каждом этапе компиляции и компоновки в моем Makefile? - PullRequest
0 голосов
/ 27 марта 2020

Я загрузил GDB 9.1 на MacOS Catalina Версия 10.15.2. Я пытаюсь отладить исполняемый файл из кода, написанного в C, называемого test, который создается в моем файле Makefile и связан с библиотекой stati c. Я попытался поместить -g и -ggdb на все строки компиляции и линии связи. Я обязательно использую make clean каждый раз, когда делаю изменения, затем запускаю make test, чтобы перезапустить Makefile. Мой Makefile выглядит следующим образом:

all: main
    mkdir -p build/bin
    mkdir -p build/lib
    mkdir -p build/objects
    mv *.o build/objects
    mv *.a build/lib
    mv main build/bin

main: main.o liblinkedlist.a
    gcc main.o -g -o main -llinkedlist -L.

test: test.o liblinkedlist.a
    gcc test.o -g -o test -llinkedlist -L.
    mkdir -p build/bin
    mkdir -p build/lib
    mkdir -p build/objects
    mv *.o build/objects
    mv *.a build/lib

test.o: src/bin/test.c
    gcc src/bin/test.c -g -c -I include

main.o: src/bin/main.c
    gcc -g src/bin/main.c -c -I include

liblinkedlist.a: src/lib.c
    gcc src/lib.c -g -c -I include
    ar rs liblinkedlist.a lib.o

clean:
    rm -rf build
    rm -f test
    rm -f main

Когда я пытаюсь сделать gdb ./test, он дает мне следующие строки кода в терминале:

Чтение символов из ./test .. .

предупреждение: не удалось открыть файл архива OSO "/Users/eamonohare/Desktop/Spring_2020_Classes/CSE_109/homework-3/./liblinkedlist.a"

предупреждение:` / Users / eamonohare /Desktop/Spring_2020_Classes/CSE_109/homework-3/test.o ': невозможно открыть для чтения символов: такого файла или каталога нет. (Символы отладки не найдены в ./test)

(gdb)

Я пробовал решение для всех остальных пользователей, имеющих эту проблему, и ни один из них не работал. Я не уверен, как я могу решить это.

1 Ответ

0 голосов
/ 27 марта 2020

Поместите исходный код, объектный файл и исполняемый файл в тот же каталог, в котором вы работаете gdb

Существуют другие способы, которые требуют ввода некоторых простых команд в gdb перед вводом run, однако; их надо переделывать снова и снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...