私は、メモリアクセスパターンをモデル化するために、特定のアプリケーションコードの特定の変数セットへの変更を追跡する必要があるプロジェクトに取り組んでいます。
主に2つのアプローチが考えられますが、それらについて考えてみてください。
- 私の最初の考えは、gprofのような多くのプロファイラーと同じように行うことです。ここでは、コンパイル前にターゲットアプリケーションコードにインストルメンテーションコードを追加し、このインストルメンテーションコードによって生成されたログを分析して必要な情報を取得します。
達成するために、私はある種のソースツーソースコンパイラを考えることができます。そこでは、与えられたコードを解析し、インストルメンテーションコード(同じ言語のソースソースコンパイラ)をアプリケーションに挿入します。後でコンパイルして実行し、必要なログを取得できます。
これは正しいように見えますか、それとも私は過剰設計ですか?そうでない場合、ソース-ソースコンパイラを(比較的)簡単に構築できるツールはありますか?
- GDBのPythonのサポートについて読んだので、変数のセットを構成ファイルとして取得し、監視対象の変数への書き込みがあるたびに監視ポイントとログを記録するPythonスクリプトを記述できるかどうかを考えています。このGDB機能を使おうとしましたが、Ubuntuマシンでは今のところ機能していないようです。 http://sourceware.org/gdb/onlinedocs/gdb/Python.html#Python
そして、アプリケーションの言語はnesCになります(nesCはコンパイルの過程でCに変換されると思います)(そしてアプリケーションは私のコンピューターのネイティブアプリのようにTOSSIMで実行されます)。