GDB:当您键入“list”以查看C中的代码时该怎么办,但它会打印给您“没有源文件的地址__________”

时间:2011-10-20 02:23:39

标签: c gdb

我会尝试简化并在此澄清我的其他问题。我基本上试图使用gdb来查看myfile.c是segfaulting的位置。但是,我不能直接检查gdb下的myfile.c,但是我得到了一个驱动程序(vdriver),它会随机测试我在myfile.c中为它提供的方法。

因此,在使用“gcc -ggdb -c vdriver.c myfile.c myfile_depends_on_this.c”进行编译后,我运行“gdb vdriver”直到它出现段错误。此时,键入“list * $ eip”只打印“没有源文件,地址为0x804something”

我也对如何为头文件(例如myfile.h和myfile_depends_on_this.h)“gcc -ggdb -c etc等”感到困惑,因为我不确定是否应该包含它(或如何)命令与否。

但无论如何,有没有办法修复“无源文件地址”问题?

1 个答案:

答案 0 :(得分:1)

以下是我理解你的问题(对我来说不太清楚):

  1. 如何在segfault之后进行调试?
  2. 如何编译.h文件?
  3. 至于

    1. 崩溃后,您将不再处于执行上下文中,因此无法再使用常规调试命令。相反,gcc将生成一个核心文件。您可能需要先为核心文件分配空间,然后再调试,如(例如):

      中所述

      http://www.network-theory.co.uk/docs/gccintro/gccintro_38.html

    2. .h文件未包含在要编译的文件列表中。它们在您的.c文件中引用,通常是#include(或#include“file.h”)语义

    3. 如果这不是你的问题,请详细说明。