Недавно я начал тратить время и усилия на понимание проекта Chromium-Browser. Моя цель состоит в том, чтобы в конечном итоге иметь возможность внести свой вклад в качестве разработчика, поэтому я в конечном итоге искал, как получить его и построить его на месте. Я сталкиваюсь с некоторыми проблемами при его запуске и пока не могу найти никакого объяснения.
Надеюсь, это поможет другим людям, которые находятся в такой же ситуации. Посмотрев немного на форумах, я не нашел ничего похожего и хотел бы знать, пропустил ли я это.
Я пытаюсь запустить хром-браузер в Windows 10 Home Edition. Моя текущая конфигурация - i5-2500k / 8gb DDR3, и мое рабочее пространство находится на жестком диске, пока я не получу больший SSD (Рекомендованные спецификации предлагают 16-32 ГБ ОЗУ и SSD, чтобы позволить ему лучше работать и работать. Может ли это быть частью проблемы?).
Моя текущая сборка chromium: Версия 54.0.2808.0 (64-разрядная версия)
Чтобы получить и собрать проект, я следовал инструкции о том, как получить код.
Что я сделал, это:
- Извлекли версию депо-инструментов для Windows в мое рабочее пространство
- Получил репозитории с использованием
fetch chromium
иgclient runhooks
- Построен с использованием
cd src
,gn gen out/Default
иninja -C out/Debug
Процесс сборки делает свою работу, и в консоли не отображаются ошибки. Однако, когда я запускаю браузер, я получаю несколько ошибок, которые, похоже, связаны с трассировкой стека. Эти ошибки не являются модальными, и до тех пор, пока я не закрою ни одну из них, Chrome будет отвечать, и страницы будут отображаться, как и ожидалось, так что на данный момент это не имеет большого значения:
Но, если я выполняю какую-то тяжелую загрузку (например, загрузку новостной ленты Facebook), она, кажется, зависает и не очень хорошо реагирует с этой точки зрения (например: бесконечная загрузка, события мыши не работают внутри вкладки). Это также может быть воспроизведено на моем конце, перейдя на https://www.google.ca и щелкнув правой кнопкой мыши в любом месте страницы.
Чтобы немного ускорить процесс, я запустил скрипт для переименования всех файлов pdb, чтобы они не подключались к процессу. Это значительно повышает скорость, но все еще есть ошибки. Ошибки StackTrace становятся такими:
Что касается проблемы с зависанием, то теперь будет отображаться пустое модальное поле, указывающее на ошибку (описание не слишком любезно в отношении того, что это такое). Этот модальный и после закрытия хром перестает работать, как задумано. Что происходит, так это то, что события мыши не отображаются, и страница никогда не завершит загрузку при перезагрузке.
Я знаю, что последняя версия иногда бывает нестабильной, но я работаю над тем, чтобы сделать этот проект приятным для работы. Есть ли что-то, что я сделал неправильно, или шаги, которые я мог пропустить? Здесь есть люди, которые выяснили подобные проблемы?
Большое спасибо, любая помощь очень ценится!
Frederik
Обновление - 2016/07/28:
Углубившись в сам код, я обнаружил, что первая ошибка вызвана тем, что ::FreeLibrary (in module_list.cc)
не может правильно освободить HMODULE. Извините за размещение кода здесь, если это может помочь, я предпочитаю позволить здесь.
Текущее исследование: создайте новую версию, которая использует ::UnMapViewOfFile
когда ::FreeLibrary
не может увидеть, прошел ли он первые ошибки.
Что касается второй ошибки, я до сих пор понятия не имею, что происходит. Собираюсь продолжить расследование, в надежде найти больше потенциальных деталей.
Пожалуйста, не стесняйтесь спрашивать любую информацию, которая может помочь решить проблемы.
Обновление 2 - 2016/07/28:
Я задал другой, более ориентированный на программирование вопрос о StackOverflow, если он может помочь: Chromium-браузер создает фатальные ошибки в module_list.cc: проверка не выполнена
Обновление 3 - 2016/07/29
Я наконец-то получил что-то работающее! Что он сделал, это настроить сборку с этими конфигурациями в args.gn:
> gn args out/Default
is_debug = false
enable_nacl = false
symbol_level = 0
remove_webcore_debug_symbols = true
Эта конфигурация не подходит для отладки, но наличие рабочей конфигурации - огромный шаг вперед. Супер счастлив прямо сейчас! Моя текущая гипотеза заключается в том, что она должна что-то делать с флагом отладки. Может ли быть так, что у внутренних вызовов функций возникают проблемы с доступом к правильным именам модулей в режиме отладки?
Обновление 4 - 2016/08/13
После свежей отладочной сборки я заметил, что немногие библиотеки отладчика Windows Kit не были скопированы в каталог сборки. На этот раз процесс связывания завершился неудачно на api-ms-win-crt-math-l1-1-0.dll
. Затем я скопировал их все, надеясь, что это решит все проблемы. При первом запуске ошибки не обнаруживались, но то же самое происходило, когда я щелкал правой кнопкой мыши на главной странице Google (механика просмотра не работала). После закрытия и повторного открытия снова появляются те же ошибки.
У кого-нибудь есть идея решить эти проблемы или какие-то другие процедуры, чем те, которые предусмотрены в проекте хрома?