Я программирую на Mobile C (мобильная агентская платформа поверх C), которая имеет открытый исходный код. Я отлаживаю с помощью отпечатков, так как не могу использовать gdb, потому что использую интерпретатор C (Embedded Ch).
Проблема в том, что есть функции, я не могу найти, где они определены. Например, есть функция agent_queue_RemoveIndex, которая используется в нескольких местах исходного кода, но я не могу найти, где она определена (я просмотрел все файлы определения, я сделал grep -R всего исходного кода). код, погуглил...). Когда я делаю grep -R, я могу найти только вызовы функции, но не определение. Похоже, что определения agent_queue_RemoveIndex нет, но оно должно быть, потому что Mobile C — это код с открытым исходным кодом, и функция работает.
Любые идеи о том, что происходит?
cscope
. Это интерфейс на основе curses, но у меня он обычно работает. С другой стороны, если нечувствительный к региструgrep -r -i agent_queue_RemoveIndex
по всему источнику не находит его, он должен быть либо в системных заголовках (которыеcscope
отследит и найдет — по крайней мере, если дать небольшую подсказку о том, где искать) , или вы проглядели это в обильном выводе. - person Jonathan Leffler   schedule 17.03.2013grep -ri agent_queue_RemoveIndex .
поиск в двоичных файлах. - person Ganesh   schedule 17.03.2013nm
перечислит символы, определенные в объекте (бинарном или библиотеке), которые могут помочь. Как хак, добавление вашего собственного конфликтующего определения функции может вызвать полезное предупреждение компиляции, сообщающее вам, где находится исходное определение... - person John Carter   schedule 17.03.2013agent_queue_RemoveIndex
. Вместо этого я бы лично нашел терминRemoveIndex
. - person dyoo   schedule 17.03.2013ctags
(создает карту определений и использует дляvi
иemacs
) - person vonbrand   schedule 17.03.2013