выяснить происхождение вызовов функций - PullRequest
0 голосов
/ 02 января 2011

Интересно, существует ли программное обеспечение, которое может помочь нам определить все возможные источники вызова функции. Например:

/* in file f1.c */
int f1() {
 x_func();
}

/* in file f2.c */
int f2() {
 x_func();
}

Если мы хотим отследить происхождение всех вызовов функций для x_func (), вывод будет:

f1.c:f1()
f2.c:f2()

Это очень полезно при чтении исходного кода. Все ответы приветствуются. Заранее благодарен: D

Ответы [ 4 ]

2 голосов
/ 02 января 2011

cscope может помочь здесь

1 голос
/ 02 января 2011

Если вы захотите сделать это во время выполнения, любой отладчик сможет это сделать: просто поместите точку останова в x_func и напечатайте трассировку стека в любой момент, когда он остановится.

0 голосов
/ 02 января 2011

Программы Tagfile, такие как ctags и etags, делают это.Они написаны для работы с редакторами, а не специально для человека.Emacs's M-.ключ ищет вещи в файле тегов.

0 голосов
/ 02 января 2011

Doxygen сделает это за вас (с фотографиями!).

Также многие IDE также включают в себя такие возможности, например, Visual Studio будет генерировать текстовые графы вызовов, а также осуществлять поиск «найти все ссылки». Вы можете сделать это с помощью бесплатного VC ++ Express Edition, проект не должен быть проектом VC ++ для использования его функций навигации по коду, просто создайте проект makefile и добавьте пути к файлам заголовков в настройки препроцессора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...