我正在开发一个valgrind的新工具,在某些时候我想读取矮人调试信息,以获得起始地址和全局数组的大小。
我知道此信息包含在dwarf3调试信息的.debug_info部分中。
在derictory / valgrind / coregrind / m_debuginfo中有一个头文件priv_readdwarf3.h,其中第57行有一个func:
/* 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
);
但我不明白如何使用这个功能。
任何帮助表示赞赏 提前谢谢。
答案 0 :(得分:0)
priv_
标头中声明的任何例程当前都不可用于工具 - 只有pub_tool_
头文件中的例程是核心/工具界面的一部分。
pub_tool_debuginfo.h
标头是调试信息的接口,VG_(get_data_description)
函数用于获取与地址关联的变量(如果有)的信息。请注意,如果要加载变量信息,您的工具需要从VG_(needs_var_info)
例程中调用clo_init
。
提出有关编写工具的问题的最佳位置可能是valgrind-developers邮件列表。