Ответ 1
Макрос __FILE__
расширяется до полного пути к текущему файлу. Это один из возможных способов получить пути к вашему исполняемому файлу. Например, расширение макроса assert
включает макрос __FILE__
.
Посмотрите на вывод вашего конвейера strings | grep
. Для каждого из этих файлов зайдите в свой проект в Xcode и откройте этот файл. Затем перейдите в "Связанные файлы doodad" и выберите "Preprocess":
Затем выполните поиск по выходу препроцессора для пути к файлу. Вы найдете много ложных срабатываний, потому что будет много директив #
line number/path. Вы можете игнорировать их, потому что они производят только отладочный вывод, который не входит в ваш исполняемый файл (если только вы не сделали что-то странное с настройками сборки). Скорее вы можете сохранить вывод препроцессора в файл, затем открыть этот файл и передать его через grep
или использовать поиск/замену регулярного выражения, чтобы удалить все строки, начинающиеся с #
.
Найдите другие экземпляры, где ваш путь отображается как строковая константа. Например, если вы использовали макрос assert
, вы найдете что-то вроде этого:
(__builtin_expect(!(argc > 0), 0) ? __assert_rtn(__func__, "/Volumes/b/Users/mayoff/TestProjects/textViewChanged/textViewChanged/main.m", 16, "argc > 0") : (void)0);
Это случай, когда путь будет завершен в ваш исполняемый файл.
Если вы не найдете все места, где вы вставляете свой путь, попробуйте выбрать "Сборка" из файла "Связанные файлы" doodad. Сборка будет заполнена комментариями, содержащими ваш путь; все после @
является комментарием в сборке, поэтому игнорируйте их.
Вы также увидите свои пути в директивах .file
. Я считаю, что они производят только вывод символа отладки, который не входит в ваш исполняемый файл, поэтому вы также можете игнорировать их.
Вы также увидите свои пути в директивах .asciz
вскоре после директив .section DWARF,...
. Это больше отладочного символа, который можно игнорировать.
Ищите оставшиеся случаи, когда ваш путь появляется на выходе сборки. Вам нужно выяснить, как устранить эти случаи. Как вы это сделаете, это зависит от контекста, в котором отображаются пути, поэтому, если вам нужна дополнительная помощь, обновите свой вопрос с помощью того, что вы найдете.