Я использую новый класс MessageLoop, представленный в перец-25 поэтому я могу запустить фоновый поток с блокировкой вызовов ppapi для File IO. До сих пор я запускал Chrome из Visual Studio с флагами --single-process
а также --register-pepper-plugins
так что я могу отлаживать свой плагин из визуальной студии.
Используя эти флаги, я обнаружил, что вызов PPB_GetInterface
get_browser
за PPB_MESSAGING_INTERFACE
возвращал нуль, и после некоторого поиска я нашел это вопрос в котором говорится, что вы должны бежать с флагом --ppapi-out-of-process
получить MessageLoop
служба поддержки.
С этим флагом добавлен get_browser
возвращает верный указатель интерфейса, но я больше не могу отлаживать свой плагин с Visual Studio Ide, поскольку он не может присоединиться к дочернему процессу, из которого запускается мой плагин. Есть ли какой-либо способ сказать, чтобы он подключался к процессу моего плагина или был запущен из одного процесса с поддержкой MessageLoop
?
Спасибо,
Джеймс
Чтобы Visual Studio автоматически подключался к дочерним процессам, вы можете использовать обходные пути, описанные в Можно ли сделать Visual Studio для отладки дочерних процессов, таких как WinDBG?.
Другой подход заключается в использовании флагов --no-sandbox
а также --ppapi-startup-dialog
когда вы запускаете Chrome. Это приведет к появлению окна сообщения с идентификатором процесса при создании процесса плагина. Затем вы можете подключить отладчик Visual Studio к этому процессу, используя команду Отладка -> Присоединить к процессу … -> Выбрать идентификатор процесса. Конечно, вы могли бы присоединиться к процессу без флагов Chrome, и он не является автоматическим, так что на самом деле это просто дает вам уверенность, что вы подключаетесь к нужному процессу, если у вас много запущенных одновременно.
Третий подход заключается в использовании бесплатного отладчика Microsoft WinDbg. Он сложен и гораздо менее удобен для пользователя, чем встроенный отладчик в Visual Studio, но у него есть возможность автоматически подключаться к дочерним процессам. Скачать можно с http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx.
Что касается MessageLoop, он не будет поддерживаться для внутрипроцессных плагинов. Как упоминается проблема, на которую вы ссылаетесь, разработчики должны перейти на внепроцессный процесс, даже если это добавляет неудобство невозможности автоматического присоединения отладчика Visual Studio без обходных путей.
Других решений пока нет …