调试核心文件

时间:2011-11-17 05:12:43

标签: debugging core

我想编写一个可以在Linux中读取核心文件的程序。但是,我找不到任何可以指导我这方面的文件。有人可以指导我去哪里找一些资源吗?

3 个答案:

答案 0 :(得分:1)

您还可以查看GDB source codegdb/core*

例如,在gdb/corelow.c中,您可以在最后阅读:

  static struct target_ops core_ops;

  core_ops.to_shortname = "core";
  core_ops.to_longname = "Local core dump file";
  core_ops.to_doc = "Use a core file as a target.  Specify the filename of the core file.";
  core_ops.to_open = core_open;
  core_ops.to_close = core_close;
  core_ops.to_attach = find_default_attach;
  core_ops.to_detach = core_detach;
  core_ops.to_fetch_registers = get_core_registers;
  core_ops.to_xfer_partial = core_xfer_partial;
  core_ops.to_files_info = core_files_info;
  core_ops.to_insert_breakpoint = ignore;
  core_ops.to_remove_breakpoint = ignore;
  core_ops.to_create_inferior = find_default_create_inferior;
  core_ops.to_thread_alive = core_thread_alive;
  core_ops.to_read_description = core_read_description;
  core_ops.to_pid_to_str = core_pid_to_str;
  core_ops.to_stratum = process_stratum;
  core_ops.to_has_memory = core_has_memory;
  core_ops.to_has_stack = core_has_stack;
  core_ops.to_has_registers = core_has_registers;

struct target_ops定义了一个泛型接口,GDB的上半部分将用于与目标进行通信。此目标可以是本地unix进程,远程进程,核心文件......

因此,如果您只调查这些函数的内容,那么您将不会被调试器实现的通用部分所淹没。

(取决于您的最终目标,您可能还希望在您的应用中重复使用此界面及其实现,不应该依赖于其他许多东西。

答案 1 :(得分:0)

查看gcore http://people.redhat.com/anderson/extensions/gcore.c的来源可能会有所帮助。

答案 2 :(得分:0)

可以使用dbx(1)mdb(1)或其中一个proc(1)工具检查核心文件。