Я хочу посмотреть, какие функции вызываются в моей программе C99 в пользовательском пространстве и в каком порядке.Кроме того, какие параметры указаны.
Могу ли я сделать это с помощью dtrace?
Например, для программы
int g(int a, int b) { puts("I'm g"); }
int f(int a, int b) { g(5+a,b);g(8+b,a);}
int main() {f(5,2);f(5,3);}
Я вижу текстовый файл с:
main(1,{"./a.out"})
f(5,2);
g(10,2);
puts("I'm g");
g(10,5);
puts("I'm g");
f(5,3);
g(10,3);
puts("I'm g");
g(11,5);
puts("I'm g");
Я не хочу изменять свой источник, и программа действительно огромна - 9 тысяч функций.
У меня есть все источники;У меня есть программа с отладочной информацией, скомпилированной в нее, и GDB может печатать параметры функции в обратном следе.
Можно ли решить задачу с помощью dtrace?
Моя ОС - одна из BSD, Linux,MacOS, Солярис.Я предпочитаю Linux, но могу использовать любую из перечисленных ОС.