使用GDB时,您如何看待GDB停止的哪个C(非汇编)指令?

时间:2011-10-20 01:42:36

标签: c gdb

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

显然,我在myfile.c中的某个地方遇到了段错误。 “dissasemble”生成的汇编代码甚至可以在汇编中显示整个方法,并指出哪些指令只是分段。

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

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

    No source file for address 0x804a3d3

有谁知道如何使这项工作?

1 个答案:

答案 0 :(得分:2)

编译调试信息。

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

更新:看起来你也无法调用GCC。我建议编写一个Makefile,并快速查看GCC手册,了解-c-o的含义。

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
相关问题