Мне нужен инструмент, позволяющий мне сказать, какие функции вызывают конкретную функцию A () (в проекте C), а какие функции вызывают эти функции и т. Д., Чтобы у меня был список функций, знать, что когда они вызываются, существует возможность вызова функции A ().
Например, у нас есть следующие функции, разбросанные по проекту:
void A()
{ /*does something*/ }
void B()
{
A();
/*and more stuff*/
}
void C()
{
if(unlikely_to_be_false)
A()
/* moar stoff */
}
void D()
{
/* code that does not refer to A() at all */
}
void E()
{
C()
}
Когда удивительный инструмент запускается с параметром A, он каким-то образом возвращает функции B C и E.
Близко к этому, но не совсем, я бы хотел этого:
По заданной переменной где-нибудь в проекте найдите все операции чтения / записи (прямые или косвенные) для нее.
Например:
void A()
{
char* c; // this is our little variable
B(c); // this is in the resulting list
}
void B(char* x)
{
printf("%c", x); // this is definately in the list
*x='d' // this is also in the list
C(x); // also in the list
}
void C(void* ptr)
{
ptr = something; // also in the list
}
Если бы вышесказанное могло бы хорошо сочетаться с emacs, я был бы очень рад!