添加源工具代码 - 源到源编译器的正确方法是什么?如何建立一个?

时间:2012-10-19 07:31:54

标签: gdb instrumentation nesc gdb-python

我正在开发一个项目,我需要跟踪任何给定应用程序代码中特定变量集的更改,以模拟内存访问模式。

我主要想到两种方法,请对它们进行思考。

  1. 我最初的想法是像许多像gprof那样的分析器这样做,我在编译之前在目标应用程序代码中添加检测代码,并将此检测代码生成的日志分析为获取所需信息。
  2. 要实现,我只能想到某种源到源编译器,它解析给定代码并将检测代码(相同语言源代码编译器)注入到应用程序中,以后我可以编译并运行以获取所需的代码日志。

    这看起来是对的还是我过度工程?如果没有,是否有工具可以让我(相对)轻松地构建源 - 源编译器?

    1. 我读到了GDB对python的支持,所以,我想我是否可以编写一个python脚本来获取变量集作为配置文件,并设置观察点并记录每次写入被监视的变量时。我试图使用这个GDB功能但是在我的Ubuntu机器上它现在似乎不起作用。 http://sourceware.org/gdb/onlinedocs/gdb/Python.html#Python
    2. 并且,应用程序的语言将是nesC(我猜nesC在编译过程中转换为C)(并且应用程序将在TOSSIM上运行,就像我的计算机上的本机应用程序一样)。

1 个答案:

答案 0 :(得分:2)

参见my paper on instrumenting codes using a program transformation systems (PTS)(PTS是一种非常通用的“源到源编译器”。

它展示了如何在感兴趣的语言中使用语法,以非常简单的方式在代码中安装探针。底层工具DMS可以很容易地定义语法。