Мой проект содержит много файлов.
Иногда мне нужно знать, где определенная функция определена (реализована) в исходном коде. В настоящее время я занимаюсь текстовым поиском в исходных файлах имени функции, что занимает очень много времени.
Мой вопрос: есть ли лучший способ (флаг компилятора / компоновщика) найти определение этой функции в исходных файлах? …. Поскольку компоновщик уже преодолел все трудности, связанные с разрешением всех этих ссылок.
Я надеюсь на метод лучше, чем вход в вызов функции в отладчике, так как функция может быть похоронена во многих вызовах.
Пытаться утилита cscope.
Из руководства:
Позволяет искать код для:
файлы, включая файл
Curses based (текстовый экран)
«Скриншот»:
C symbol: atoi
File Function Line
0 stdlib.h <global> 86 extern int atoi (const char *nptr);
1 dir.c makefilelist 336 dispcomponents = atoi(s);
2 invlib.c invdump 793 j = atoi(term + 1);
3 invlib.c invdump 804 j = atoi(term + 1);
4 main.c main 287 dispcomponents = atoi(s);
5 main.c main 500 dispcomponents = atoi(s);
6 stdlib.h atoi 309 int atoi (const char *nptr) __THROWFind this C symbol:
Find this global definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:
Если символ экспортируется, то вы можете подключить objdump
или же nm
и посмотрите на .o
файлы. Это не полезно для поиска вещей в заголовочных файлах.
Мое предложение будет поместить ваш проект в git
(который несет в себе множество других преимуществ) и использовать git grep
которая смотрит только на те файлы, которые находятся под контролем версий git grep
объектные файлы и другие несоответствия). git grep
тоже приятно и быстро.