Вы, вероятно, не хотите делать это на target create
, поскольку нет гарантии, что цель будет знать все библиотеки, которые будут загружены в нее, прежде чем она действительно запустится. Кроме того, вы, вероятно, также хотите обрабатывать библиотеки, которые динамически загружаются во время работы программы. Реальное место для этого - добавить модуль (именно здесь перехватчик DebugSymbols происходит в lldb.)
Похоже, что в Linux и Windows нет понятия вызова какого-либо агента для добавления символов отладки. Они действительно ищут в /usr/local/debug
предварительно кэшированные символы, но нет механизма для вызова, подобного dsymForUUID.
Если вы готовы к небольшому взлому lldb, было бы довольно просто добавить такую выноску. Просто сделайте настройку, которая принимает имя программы. Эта программа принимает в качестве входных данных UUID и возвращает в качестве выходных данных имя файла для отладочной информации. Тогда вы могли бы запустить lldb в том же месте, где lldb в настоящее время вызывает LocateMacOSXFilesUsingDebugSymbols (в LocateSymbols.cpp).
Возможно, более простой способ сделать это - добавить target stop-hook
, который вызывает написанную вами команду на основе python, которая просматривает список модулей и извлекает отладочную информацию для всех новых библиотек, которые были обнаружены. Если вы хотите использовать это для отладки запущенных программ, вам нужно только добавить символы перед тем, как управление вернется к пользователю. Таким образом, стоп-крюк будет подходящим местом для этого.