1

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

4

2 回答 2

2

回答您的后续问题“是否有任何其他 DBI 分析框架(例如 pin)有助于使用调试符号?”

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

bp_image->findVariable(“global1”);
bp_proc->malloc(bp_image->findType(“int”));
于 2014-07-13T15:34:40.290 回答
2

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

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

Pin 2.13 用户指南 - 符号

于 2014-07-05T19:29:02.760 回答