2016-11-07 4 views
2

Согласно официальному руководству lldb, возможность просмотра исходного кода во время сеанса отладки (с использованием команды source list) выполняется путем установки нового пути для исходных файлов.LLDB - установочный код исходного кода

i.e, если я скомпилировал свой проект в/tmp на одном компьютере и развернул его на другом компьютере, где исходный код находится в/Users/Src /, я должен ввести settings set target.source-map /tmp /Users/Src из запуска lldb на машине развертывания.

Однако, что произойдет, если я получил исполняемый файл от кого-то еще и не знаю каталог сборки. и, возможно, исходный код организован иначе, чем был построен (но содержимое файла одинаков).

мои вопросы:

  1. ли lldb знать, как искать соответствующий исходный файл рекурсивно в подаваемом пути?

  2. Как я могу получить исходную форму пути для исполняемого файла mach-o?

вот формальное описание команды:

источник Переоформления файлов для пути доступа сеанса отладки. Если ваши исходные файлы больше не находятся в том же месте, что и при создании программы, возможно, программа была построена на другом компьютере - вам нужно сообщить отладчику, как найти источники в их локальном пути к файлу пути к файлу системы сборки.

+0

Я не знаком ни с lldb, ни с osx, но я предлагаю вам попробовать 'readelf -a' и' objdump -p', чтобы получить информацию о пути из вашего исполняемого файла. Но 'readelf' кажется недоступным в osx, http://stackoverflow.com/questions/3286675/readelf-like-tool-for-mac-os-x –

+0

благодарит за комментарии. Однако исполняемая двоичная структура ORX отличается от ELF и называется MACH-O, но я попытаюсь найти синоним objdump. – Zohar81

ответ

1

Если вы знаете имя функции в коде в вопросе, сделайте следующее:

(lldb) image lookup -vn <FunctionName> <BinaryImageNameContainingFunction> 

и искать CompileUnit записи. Путь, указанный здесь, - это путь lldb, полученный из отладочной информации.