我想编写一个可以在Linux中读取核心文件的程序。但是,我找不到任何可以指导我这方面的文件。有人可以指导我去哪里找一些资源吗?
答案 0 :(得分:1)
您还可以查看GDB source code,gdb/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)
工具检查核心文件。