2017-02-14 11 views
0

Я использую VSCode + CodeLLDB + LLDB для отладки языка JIT (KL), однако у меня возникают проблемы с получением LLDB для распознавания исходных файлов.LLDB: указание папок поиска источника для сплющенной структуры папок

Это дублированный вопрос к LLDB equivalent of gdb "directory" command for specifying source search path?, однако принятый ответ не работает для меня.

LLDB, кажется, думает каждый блок источника компилируются в локальный каталог - так что, если я исполню

kl /MyWork/someFile.kl 

и этот файл включает в себя /any/other/path/external.kl, LLDB поверит файл расположенный в /MyWork/external.kl

до сих пор, я (в основном) работы вокруг этой проблемы с помощью

settings set target.source-map /MyWork/ /any/other/path/ 

Однако это только кажется, работает для одной папки. Если я пробовал:

settings set target.source-map /MyWork/ /any/other/path/ 
settings set target.source-map /MyWork/ /I/use/many/dependencies/ 

Тогда LLDB, похоже, не сможет найти -any-файлы в любой папке. Интересно, что когда я попытался это LLDB ошибочный с точными сообщениями

can't find external.kl in /I/use/many/dependencies/ 
can't find dependencies.kl in /any/other/path/ 

Какие точные сообщения, но, кажется, почти как если LLDB просто ищет предлог, чтобы ОШИБОК из :).

Примечание. Я могу установить точки останова и посмотреть местные жители, я просто не могу просмотреть исходный код в этом месте.

Anywho - есть ли какие-либо предложения по решению этой проблемы? Есть 3 возможности для работы с: - Изменить/работать с LLDB, чтобы найти исходные файлы - Изменить CodeLLDB для изменения путей между LLDB + VSCode - Как-то убедить VSCode игнорировать предоставленный ему путь и искать его собственные папки для любой файл, соответствующий названию.

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

ответ

0

lldb знает только об исходных путях из того, что написано в отладочной информации. Правило в DWARF (используется формат debug lldb) заключается в том, что если файл include указывается только относительным путем или базовым именем, он считается относительным к каталогу компиляции. Похоже, это то, что происходит в вашем случае. Это звучит как ошибка компилятора. В настоящий момент lldb не сможет восстановить иерархию файлов.

Исходные карты должны дать вам ручной способ исправить это, и из-за его звука то, что вы описываете, должно работать. Но, возможно, в выводе DWARF из kl есть что-то еще странное, что путает его. Вам нужно будет указать ошибку с некоторым примером двоичного кода: http://bugreporter.apple.com.

Смежные вопросы