Действительно ли liblldb-core.a действительно должен быть размером 763 МБ?

Это определенно берет торт с точки зрения того, что я являюсь самым большим одиночным исполняемым кодом, который я когда-либо видел.

Теперь было немного легче получить все это на моем Mac здесь (я также пытался создать LLDB на Linux, и в настоящее время я сражаюсь со ссылкой на Python), за что я благодарен, но этот потрясающе большой исполняемый файл меня вторгается... Я сделал что-то не так? Что внутри этого чудовищного архива?

Я сделал это:

% otool -TV liblldb-core.a

Он производит 1159 строк вывода, которые помещают его вокруг 350+ объектных файлов. Это звучит правильно, я видел, что проект XCode прорабатывает около 350 исходных файлов.

Я предполагаю, что мой вопрос в том, почему LLDB работает таким образом, почему он не является более легким и почему он не просто ссылается на код LLVM и Clang, а на то, что он делает? ИЛИ, являются ли содержимое этого архива уже полным кодом LLDB? Я признаю, что создание отладчика - это совершенно обязательство, но это, честно говоря, просто ошеломительно.

Я знаю, что компиляция в -O3 вероятно, раздувает размер исполняемого файла. Я не собираюсь возвращаться и перекомпилировать этого монстра, хотя (компьютер почти растаял, когда smcFanControl сообщал о том, что процессорные ядра составляют до 106 градусов C).

Обновление: я рассказывал о некоторых дальнейших изучениях, которые я только что сделал здесь... Я все еще не могу найти чудовищного liblldb-core.a или что-то в этом роде внутри XCode.app, и я все еще немного путают о том, как все это работает.

2 ответа

Это отладочная информация о реальной проблеме с liblldb-core.a. Около 720 МБ 750 МБ - DWARF. (Вы можете протестировать это самостоятельно - ar x liblldb-core.a в каталог, затем strip -S *.o и у вас будет около 32 МБ файлов .o). DWARF без уникального уникального стиля имеет несколько неприятных наворотов с [ CN10].

Я могу создать .tar.gz (разборной) LLDB-фреймворк и программу драйвера lldb, и они приходят со скоростью около 10 МБ или около того с этим сжатием - и это происходит после связывания во всех бит llvm и clang, необходимых для lldb. Здесь нет ничего особенно возмутительного, даже если промежуточные шаги могут выглядеть сумасшедшими.


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

Редактировать: Нет, это не совсем ответ. В каталоге Release фактически содержится liblldb-core.a который немного больше, чем другой.

Похоже, что этот огромный архив размером 700 Мбайт - это своего рода "побочный эффект". Когда я архивировал проект, он создал файл размером 369 .xarchive. Я уверен, что это лучшее представление о "содержании" здесь. Я все еще в основном изучаю этот материал, спотыкаясь о нем в темноте...

Обновление:

О, хорошо, глядя на эту ситуацию, это имеет немного больше смысла:

Я вынул эти файлы из каталога Release после его создания в Xcode (и минимально настраивал его для использования -O3 для выпуска). Я вижу здесь, что файл dSYM ~ 350 dSYM содержащий отладочную информацию, занимает большую часть пространства этого .xarchive с более ранних .xarchive, и что фактически исполняемый код lldb составляет менее 40 lldb, большинство из которых находится в этой структуре в исполняемый файл LLDB.

Это гораздо более разумно для меня. Теперь, когда я получил это из Xcode и в папку "Мои документы", где я могу быть увереннее, что никакая внешняя программа не удалит или не изменит ее без моего ведома, я могу чувствовать себя хорошо о символической привязке ее отсюда к /usr/lib/lldb.

licensed under cc by-sa 3.0 with attribution.