gpt4 book ai didi

c - 使用 GDB 时,如何查看 GDB 停止在哪条 C(而非汇编)指令上?

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:08 26 4
gpt4 key购买 nike

看,问题是我应该使用可执行驱动程序 (vdriver) 来测试我编写的 C 源文件 (myfile.c),其中包含驱动程序将使用的一组方法。我使用 gcc 将它们编译在一起(以及它们所依赖的任何文件),然后运行“gdb vdriver”

显然,我在 myfile.c 的某处遇到了段错误。 “反汇编”生成的汇编代码甚至可以在汇编中显示整个方法,并指出刚刚出现段错误的指令。

但是,由于汇编代码的复杂性(和长度),我认为在 C 中查看发生段错误的这一行会更有效。

但是,运行命令“list *$eip”会导致:

    No source file for address 0x804a3d3

有人知道怎么做吗?

最佳答案

使用调试信息编译。

gcc -ggdb -c source.c -o source.o ...

Update: It looks like you're having trouble invoking GCC as well. I suggest writing a Makefile, and taking a quick look through the GCC manual for what -c and -o mean.

CC = gcc
CFLAGS = -ggdb -Wall # or whatever flags you want, read the manual

# List all files, with *.c changed to *.o (Make will figure the rest out)
my_app : file1.o file2.o file3.o file4.o
$(CC) -o my_app $^
# The above line should start with a tab, not spaces

clean :
rm -f my_app *.o

# List dependencies like this (technically optional)
# But if you don't do it, "make" might not re-make things that need it
file1.o : file1.c header.h header2.h
file2.o : file2.c header.h

关于c - 使用 GDB 时,如何查看 GDB 停止在哪条 C(而非汇编)指令上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830226/

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