gpt4 book ai didi

c - 使用 LLDB 调试 C

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:21 25 4
gpt4 key购买 nike

我正在为一些基本的多边形操作编写一个小型 C 库,并且我正在尝试从命令行使用 LLDB 进行调试。我能够使用我编译的测试运行器运行 LLDB,但我只能看到汇编指令,而不是 C 代码。

我已经使用 -g 标志编译了我的库和测试运行器,如此处所示,在此 Makefile 中:

#Define compiler flags
CFLAGS = -g -Wall -Werror

#Define objects
OBJECTS = MASClip.o MASGraph.o MASClipTest.o

tests : $(OBJECTS)
cc $(CFLAGS) $(OBJECTS) -o tests

MASClip.o : MASClip.h MASClip.c
cc $(CFLAGS) -c MASClip.c

MASGraph.o : MASGraph.h MASGraph.c
cc $(CFLAGS) -c MASGraph.c

MASClipTest.o : MASClipTest.c
cc $(CFLAGS) -c MASClipTest.c

test :
make
make clean
./tests

.PHONY : clean

clean :
rm *.o

我可以通过函数名设置断点,所以我不明白为什么代码不显示。

我四处搜索,但我没有发现我所做的与教程和其他问题所说的有什么不同。我一定遗漏了一些明显的东西。

此外,我意识到我可以在 Xcode 中完成此操作,但是当我直接编写 C 时,我喜欢使用 VIM,并且能够从命令行使用 LLDB 会很好。

如何让 LLDB 在调试时显示实际的 C 代码?

最佳答案

在 OS X 上,调试信息存储在 .o 文件中。调试器在可执行文件中使用“调试映射”引用 .o 文件。看起来您在尝试调试之前删除了 .o 文件,因此调试器没有调试信息。

要么在调试时保留 .o 文件,要么在可执行文件上运行 dsymutil 工具以生成链接的调试输出文件 (.dSYM)。如果将 dSYM 放在可执行文件(或 Spotlight 搜索的任何地方),然后 lldb 将自动找到它。

请注意,如果您只是给编译器一个 .c 文件列表,它会自动为您创建一个 dSYM - 因为它会在完成后删除 .o 文件 - 这样调试仍然是可能的。

关于c - 使用 LLDB 调试 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32729498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com