【问题标题】:Why is gdb not finding any debugging symbols, even though I have -g at every stage of compilation and linkage in my Makefile?为什么 gdb 没有找到任何调试符号,即使我在 Makefile 的每个编译和链接阶段都有 -g ?
【发布时间】:2020-03-26 21:14:26
【问题描述】:

我在 macOS Catalina 版本 10.15.2 上下载了 gdb 9.1。我正在尝试从用 C 编写的名为 test 的代码调试可执行文件,该代码在我的 Makefile 中创建并链接到静态库。我尝试将 -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)

我已尝试解决所有其他遇到此问题的用户,但没有一个有效。我不确定如何解决这个问题。

【问题讨论】:

  • mv *.a build/lib 可能是因为您在链接后将所有对象和库移到了不同​​的路径。
  • 解决了无调试信号错误,但现在我在尝试运行代码时遇到错误。 (gdb) 运行启动程序:/Users/eamonohare/Desktop/Spring_2020_Classes/CSE_109/homework-3/test [进程 72391 的新线程 0x1a03] [进程 72391 的新线程 0x2703] 然后它就坐在这一行,什么也不做。
  • 不使用gdb直接运行程序有什么作用吗?
  • 是的,程序尝试运行,但出现 29 段错误
  • 抱歉,如果没有minimal verifiable example,将无法为您提供更多帮助。可能是您有导致未定义行为的错误。由于它是 UB,它在使用 gdb 运行时可能会做一件事,而在直接运行时可能会做其他事情。在 gdb 中,您可以尝试 ctrl-c 来查看它是否会破坏您的程序,如果是,您可以获取堆栈跟踪并进一步调试。

标签: c makefile gdb


【解决方案1】:

将源代码、目标文件和可执行文件放在与您运行gdb的目录相同的目录中

还有其他方法,需要在输入run之前输入一些简单的命令到gdb,但是;一遍又一遍地重做会很麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多