Quiero escribir un pase LLVM al instrumento en cada acceso a la memoria. Esto es lo que estoy tratando de hacer.Instrumenting C/C++ code using LLVM
Dado cualquier programa C/C++ (como el que figura a continuación), estoy tratando de insertar llamadas a alguna función, antes y después de cada instrucción que lee/escribe a/desde la memoria. Por ejemplo, consideremos el siguiente programa C++ (Account.cpp)
#include <stdio.h>
class Account {
int balance;
public:
Account(int b)
{
balance = b;
}
~Account(){ }
int read()
{
int r;
r = balance;
return r;
}
void deposit(int n)
{
balance = balance + n;
}
void withdraw(int n)
{
int r = read();
balance = r - n;
}
};
int main()
{
Account* a = new Account(10);
a->deposit(1);
a->withdraw(2);
delete a;
}
Así que después de la instrumentación mi programa debe verse como:
#include <stdio.h>
class Account
{
int balance;
public:
Account(int b)
{
balance = b;
}
~Account(){ }
int read()
{
int r;
foo();
r = balance;
foo();
return r;
}
void deposit(int n)
{
foo();
balance = balance + n;
foo();
}
void withdraw(int n)
{
foo();
int r = read();
foo();
foo();
balance = r - n;
foo();
}
};
int main()
{
Account* a = new Account(10);
a->deposit(1);
a->withdraw(2);
delete a;
}
donde foo() puede ser cualquier función como obtener la hora actual del sistema o incrementar un contador ... etc.
Por favor, dame ejemplos (código fuente, tutoriales, etc.) y pasos sobre cómo ejecutarlo. He leído el tutorial sobre cómo hacer un pase LLVM en http://llvm.org/docs/WritingAnLLVMPass.html, pero no pude entender cómo escribir un pase para el problema anterior.
Bueno, probablemente podría sobrecargar al operador no solo para realizar las funciones de suma, resta, asignación, sino también para llamar a su función personalizada. – vishakvkt
¿Por qué quiere agregar estas funciones? Si desea depurar su programa hay mejores métodos disponibles. – tune2fs
Iba a votar para cerrar esta pregunta como un duplicado de http: // stackoverflow.com/questions/7526550/instrumenting-c-c-codes-using-llvm (es decir, mira los títulos) y noté que eras el autor de ambos. ¿Cómo espera que los usuarios de StackOverflow le den respuestas esta vez que no le dieron la última vez (excepto que lo haga por usted, lo que no ocurrirá)? –