2008-11-19 2 views
1

Из того, что я собираюсь, Google Chrome может запускать плагины браузера, написанные с использованием NPAPI.Сбой плагина Firefox в Chrome

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

Как отладить это? Я попробовал привязать отладчик к хром, но трассировки стека, которые я получаю, находятся глубоко в самом Chrome, и, как я уже сказал, ни один из «моего» фактического кода не запускается, но, предположительно, это только код инициализации NPAPI.

Буду признателен за некоторые указатели.

ответ

2

Как оказалось, часть кода инициализации из старого примера плагина NPAPI, который я использовал, вызвала сбой. Мне жаль, что я решил это довольно долго и не могу найти конкретные изменения, которые я сделал, чтобы исправить это в истории управления версиями. Во всяком случае, моя проблема исправлена ​​и вызвана тем, что я глуп и слепо доверяю примеру кода.

2

Хром - с открытым исходным кодом ... вы пытались загрузить источник и построить его? Таким образом, вы, по крайней мере, можете указать вашу среду IDE в дерево исходного кода и автоматически автоаккумулировать ее при сбоях, что может дать вам немного больше информации о том, что произошло.

Это не решит вашу ошибку, конечно, но это может помочь вам сообщить об этом команде Chrome. Как вы очень хорошо знаете, API-интерфейс плагина довольно необычен для Chrome, и возможно, что ошибка принадлежит им, а не вашей.

4

В документах Chromium dev описаны некоторые приемы для подключения процессов Visual Studio к Chrome: Chromium Developer Documentation > Debugging Chromium.

Некоторые проблемы вы можете столкнуться с плагином NPAPI в Chrome:

  • Ваш плагин будет работать в отдельном процессе с Chrome UI. (Возможно, вы это уже знаете :)
  • Если загружены несколько экземпляров вашего плагина (на одной и той же странице HTML или на разных вкладках Chrome), ваши экземпляры плагинов будут работать в одном и том же процессе вместе с. Если у вас есть глобальные переменные, ваши экземпляры плагинов могут топать друг на друга.
  • Chrome использует DEP (Data Execution Protection), но Firefox этого не делает. Если вы используете ATL или другие трюки кода JIT, DEP может привести к сбою вашего плагина.
+0

Firefox 3 и использование DEP – taxilian 2009-12-24 22:37:11

Смежные вопросы