Безголовый Chrome был отправлен в Chrome 59 Google Team , в котором был введен способ запуска браузера Chrome в Безглавой среде .
Была добавлена заметка:
Headless mode has been available on Mac and Linux since Chrome 59. Windows support came in Chrome 60.
В статье Getting Started with Headless Chrome
указано, что:
--disable-gpu \ # Temporarily needed if running on Windows.
Примечание был добавлен как:
В настоящий момент вы также захотите включить флаг
blockquote>--disable-gpu
, если вы работаете в Windows.обсуждение
Headless: make --disable-gpu flag unnecessary
было ясно, что:Флаг
blockquote>--disable-gpu
больше не нужен на Linux или Mac OSX . Это также станет ненужным для Windows, как только исправлена ошибкаSwiftShader fails an assert on Windows in headless mode
.Что произошло под капотом?
As за обсуждение
headless: Switch from osmesa to SwiftShader
, поскольку команда Google / Chromium решила отправить SwiftShader с Chrome, команда подумала начать использовать его для рендеринга GL-контента в режиме безголового . Для этого потребовалось несколько изменений:
- Пропустить сбор данных GPU в режиме Безглавых , поскольку SwiftShader не считается программной реализацией этого кода, который приводит к сбою когда мы пытались получить информацию из Window System.
- Пропустите инициализацию GL в InitializeStaticEGLInternal , если мы намереваемся использовать osmesa. SwiftShader требует инициализации, как и другие внепроцессные реализации.
- В настоящее время SwiftShader не поддерживается на Mac OSX , поэтому команда решила продолжить использовать физический GPU в режиме безглавых на этой платформе (в отличие от других платформ, где все выдается программным обеспечением).
- Таким образом, чтобы отключить поддержку WebGL в режиме Безголовый режим они решили использовать --disable-gpu и --disable-software-rasterizer
Идея
Support WebGL in headless
все еще обсуждается, ноSwiftShader fails an assert on Windows in headless mode
с ошибкой как:[0117/125830.649194:ERROR:gpu_process_transport_factory.cc(1043)] Lost UI shared context. DevTools listening on ws://127.0.0.1:37429/devtools/browser/1f0b2bf7-dfdd-44ac-9da7-f2659d352f0d
Заключение
Эта ошибка не влияет на ваш
@Test
, и пока вы можете игнорировать ошибку.
Я думаю, что вы ищете команду (d)ebug
, которая по некоторым причинам не указана в командах отладчика . Для справок в будущем pdb
имеет хороший набор заданных команд (которые вы можете увидеть, набрав help
в интерактивной подсказке). Включить команду debug
:
(Pdb) help debug
debug code
Enter a recursive debugger that steps through the code
argument (which is an arbitrary expression or statement to be
executed in the current environment).
Кажется, что вы делаете то, что вам нужно. Используя ваш образец сценария из терминала:
python -m pdb pdbscript.py
После выдачи двух команд n
, чтобы функция была разобрана (я считаю, что это работает pdb
). Вы можете выдать команду debug get_value_for_weekday(0)
для рекурсивного шага в функции:
(Pdb) debug get_value_for_weekday(0)
ENTERING RECURSIVE DEBUGGER
> <string>(1)<module>()
((Pdb)) s
--Call--
> /home/jim/Desktop/pdbscript.py(3)get_value_for_weekday()
-> def get_value_for_weekday(weekday_index=None):
((Pdb)) n
> /home/jim/Desktop/pdbscript.py(4)get_value_for_weekday()
-> values = [10, 20, 20, 10, 30, 30, 30]
((Pdb)) n
> /home/jim/Desktop/pdbscript.py(5)get_value_for_weekday()
-> if not weekday_index:
((Pdb)) p weekday_index
0
((Pdb)) n
> /home/jim/Desktop/pdbscript.py(7)get_value_for_weekday()
-> return sum(values) / 7
Обратите внимание, Я действительно отношусь к этой форме мета-отладки , но, похоже, быть тем, что вам нужно.
Что касается вашего примера, вам не нужно выходить из pdb и изменять код. Вы можете войти в функцию (с 's') и установить weekday_index = 0 внутри.
Одним из решений вашей исходной проблемы является использование команды перехода отладчика следующим образом:
Это сработало, когда я попробовал, но отладчик жаловался, когда я попытался сделать шаг 3 до шага 2 по какой-то причине.