1

Недавно я начал тратить время и усилия на понимание проекта 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 будет отвечать, и страницы будут отображаться, как и ожидалось, так что на данный момент это не имеет большого значения:

Ошибки StackTrace

Но, если я выполняю какую-то тяжелую загрузку (например, загрузку новостной ленты Facebook), она, кажется, зависает и не очень хорошо реагирует с этой точки зрения (например: бесконечная загрузка, события мыши не работают внутри вкладки). Это также может быть воспроизведено на моем конце, перейдя на https://www.google.ca и щелкнув правой кнопкой мыши в любом месте страницы.

Чтобы немного ускорить процесс, я запустил скрипт для переименования всех файлов pdb, чтобы они не подключались к процессу. Это значительно повышает скорость, но все еще есть ошибки. Ошибки StackTrace становятся такими: Ошибки, когда нет PDB

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

Я знаю, что последняя версия иногда бывает нестабильной, но я работаю над тем, чтобы сделать этот проект приятным для работы. Есть ли что-то, что я сделал неправильно, или шаги, которые я мог пропустить? Здесь есть люди, которые выяснили подобные проблемы?

Большое спасибо, любая помощь очень ценится!

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 (механика просмотра не работала). После закрытия и повторного открытия снова появляются те же ошибки.

У кого-нибудь есть идея решить эти проблемы или какие-то другие процедуры, чем те, которые предусмотрены в проекте хрома?

1 ответ1

3

Я хотел бы попросить вас установить Windows, среду для Visual Studio и правильно получить набор инструментов компилятора. Пожалуйста, следуйте инструкциям, приведенным ниже, и попробуйте все с последней версией, включая обновления. Пожалуйста, найдите ссылку здесь: Инструкция по сборке Windows

Для справки, пожалуйста, найдите снимки сборки Chromium здесь: Снимки хрома

Дайте мне знать, поможет ли это вам хоть немного. Спасибо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .