2012-12-05 45 views
1

我正在開發一個valgrind的新工具,其中在某些時候我想讀取矮人調試信息以獲取起始地址和全局數組的大小。Valgrind新工具,閱讀矮人2或矮人3信息

我知道這個信息包含在dwarf3調試信息的.debug_info部分。

在derictory/Valgrind的/ coregrind/m_debuginfo存在其中有在第57行一個FUNC頭文件priv_readdwarf3.h:

/* 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

priv_標頭中聲明的任何例程目前都不可用於工具 - 只有pub_tool_標頭文件中的例程是核心/工具接口的一部分。

pub_tool_debuginfo.h頭是調試信息的接口,而VG_(get_data_description)函數是用於獲取有關與地址關聯的變量(如果有)的信息的函數。請注意,如果需要加載可變信息,您的工具將需要從clo_init例程調用VG_(needs_var_info)

有關編寫工具的問題最好的地方可能是valgrind-developers郵件列表。

+0

謝謝湯姆, 我按照你的指示,我寫了下面的一段代碼。 (free),sizeof(HChar));或者,可以使用VG_(freeX) myxarr2 = VG_(newXA)(VG_(malloc),「football」, VG_(free),sizeof(HChar)); check = VG_(get_data_description)(myxarr1,myxarr2,addr); 其中addr包含我的數組的起始地址 我也從我的clo_init調用VG_(needs_var_info)是假的。這意味着沒有描述是由'VG_(get_data_description)'創建的。 – lazlazari