我正在创建一个pin工具,用于跟踪变量实际需要的位宽。为了跟踪高级别(例如C变量),我想在可执行文件中使用调试信息
我无法找到使用引脚API提取调试信息的方法
如果有任何引脚API函数调用提取调试信息,请告诉我。
如果针不可能,有哪些替代方案?
(例如DynamoRIO)
答案 0 :(得分:2)
您正在寻找符号信息。遗憾的是,PIN无法让您直接访问高级语言(如C或C ++)中使用的变量名。如果您需要此信息,可以包括dbghelp
for Windows,或libelf
,libdwarf
for Linux,但这需要两个完全不同的实现。 “PIN用户指南”中提供了一些有关符号的信息,以及访问有关所称函数的符号信息的基本功能。
Pin使用符号对象(SYM)提供对函数名称的访问。符号对象仅提供有关应用程序中的函数符号的信息。关于其他类型符号(例如数据符号)的信息必须由工具独立获得。
答案 1 :(得分:2)
回应您的后续问题"是否有其他DBI配置文件框架(如pin)可能有助于使用调试符号?"
与pin不同,DynInst理解变量和显然甚至类型的调试符号。从他们的教程(http://www.paradyn.org/tutorial/Dyninst.pptx):
bp_image->findVariable(“global1”);
bp_proc->malloc(bp_image->findType(“int”));