1

我正在开发一个新的 valgrind 工具,在某些时候我想读取 dwarf 调试信息,以获取全局数组的起始地址和大小。

我知道此信息包含在 dwarf3 调试信息的 .debug_info 部分中。

在 derictory /valgrind/coregrind/m_debuginfo 中有一个头文件 priv_readdwarf3.h,其中第 57 行有一个函数:

    /* Read variables and types from DWARF3 ".debug_info" sections. */
    extern void ML_(read_debuginfo_dwarf3)(

    struct _DebugInfo* di,
    UChar* debug_info_img,   SizeT debug_info_sz,
    UChar* debug_types_img,  SizeT debug_types_sz,
    UChar* debug_abbv_img,   SizeT debug_abbv_sz,
    UChar* debug_line_img,   SizeT debug_line_sz,
    UChar* debug_str_img,    SizeT debug_str_sz,
    UChar* debug_ranges_img, SizeT debug_ranges_sz,
    UChar* debug_loc_img,    SizeT debug_loc_sz,
    UChar* debug_info_alt_img, SizeT debug_info_alt_sz,
    UChar* debug_abbv_alt_img, SizeT debug_abbv_alt_sz,
    UChar* debug_line_alt_img, SizeT debug_line_alt_sz,
    UChar* debug_str_alt_img,  SizeT debug_str_alt_sz
    );

但我不明白如何使用这个功能。

任何帮助表示感谢提前感谢。

4

1 回答 1

0

头文件中声明的任何例程priv_当前对工具不可用 - 只有pub_tool_头文件中的例程是核心/工具接口的一部分。

pub_tool_debuginfo.h头是调试信息的接口,而VG_(get_data_description)函数是用于获取与地址关联的变量(如果有)的信息的接口。请注意,如果您的工具想要加载变量信息,则需要VG_(needs_var_info)从其例程中调用。clo_init

询问有关编写工具问题的最佳地点可能是valgrind-developers邮件列表。

于 2012-12-05T22:55:16.280 回答