在pin工具中使用可执行文件的调试信息

时间:2014-06-26 07:55:54

标签: gcc debug-symbols intel-pin

我正在创建一个pin工具,用于跟踪变量实际需要的位宽。为了跟踪高级别(例如C变量),我想在可执行文件中使用调试信息 我无法找到使用引脚API提取调试信息的方法 如果有任何引脚API函数调用提取调试信息,请告诉我。 如果针不可能,有哪些替代方案?
(例如DynamoRIO)

2 个答案:

答案 0 :(得分:2)

您正在寻找符号信息。遗憾的是,PIN无法让您直接访问高级语言(如C或C ++)中使用的变量名。如果您需要此信息,可以包括dbghelp for Windows,或libelflibdwarf for Linux,但这需要两个完全不同的实现。 “PIN用户指南”中提供了一些有关符号的信息,以及访问有关所称函数的符号信息的基本功能。

  

Pin使用符号对象(SYM)提供对函数名称的访问。符号对象仅提供有关应用程序中的函数符号的信息。关于其他类型符号(例如数据符号)的信息必须由工具独立获得。

     

Pin 2.13 User Guide - Symbols

答案 1 :(得分:2)

回应您的后续问题"是否有其他DBI配置文件框架(如pin)可能有助于使用调试符号?"

与pin不同,DynInst理解变量和显然甚至类型的调试符号。从他们的教程(http://www.paradyn.org/tutorial/Dyninst.pptx):

bp_image->findVariable(“global1”);
bp_proc->malloc(bp_image->findType(“int”));