2009-12-26 63 views
5

Tôi đã viết một plugin NPAPI nhỏ sử dụng ví dụ Mozilla NPRuntime cũ làm cơ sở. Vấn đề của tôi là nó hoạt động tốt trên Firefox và Safari (trên Windows), nhưng nó không hoạt động với Google Chrome.Plugin NPAPI không hoạt động trong Google Chrome

Tôi có thể thấy plugin trong: plugin tốt và tôi thấy Chrome khởi chạy quy trình mới để chạy plugin khi tôi mở trang thử nghiệm, quá trình plugin sẽ mất sau ~ 10 giây mà không có bất kỳ hộp thoại lỗi nào. Trong suốt 10 giây, quá trình truy cập đối tượng plugin có thể hoạt động không hoạt động (hoạt động tốt khi sử dụng Firefox hoặc Safari).

Bất kỳ ý tưởng nào có thể khiến Chrome giết quá trình plugin sau 10 giây? Phải là một cái gì đó khởi tạo liên quan, bởi vì nó giết chết nó ngay cả khi tôi không truy cập các plugin trong bất kỳ cách nào.

Trả lời

15

Rất khó để nói chắc chắn, nhưng bạn có thể sử dụng tham số dòng lệnh --plugin-startup-dialog để Chrome bật cảnh báo khi nó tải plugin, trong cùng một quá trình. Sau đó bạn có thể đính kèm trình gỡ rối vào quá trình đó và hy vọng sẽ gặp lỗi.

Bạn có thể xem FireBreath để so sánh xem bạn có thể phát hiện bất kỳ khác biệt lớn nào trong mã khởi tạo hay không, vì FireBreath hoạt động tốt trong Chrome. Tuy nhiên, tôi khuyên bạn nên đính kèm một trình gỡ lỗi và bước qua mã cho đến khi nó bị lỗi. Đặt điểm ngắt tại mỗi điểm nhập, trên NPP_New, NPP_Destroy và NPP_SetWindow và xem điều gì xảy ra.

Một tùy chọn khác là thử xây dựng Chromium từ nguồn (không khó khăn, nhưng tốn thời gian) và sau đó bạn có thể nhận được một dấu vết ngăn xếp đầy đủ đến nơi nó ngừng hoạt động.

Chúc may mắn!

+2

Ngoài ra, nếu mã này không bao giờ nhập mã plugin và bạn đang sử dụng cửa sổ, hãy định cấu hình chrome bằng * depends.exe * có thể cung cấp các gợi ý có giá trị. –

+1

Sử dụng hộp thoại -plugin-startup-cho phép tôi gỡ lỗi chuỗi khởi tạo và tìm ra sự cố. Cảm ơn bạn! – eburger

+0

Bạn có thể cho chúng tôi biết vấn đề là gì không, nếu nó là chrome cụ thể? – Gui13

5

Nhờ mẹo của Taxilian, tôi đã có thể gỡ lỗi chuỗi khởi tạo và phát hiện ra rằng plugin mẫu đã trả về lỗi khi Chrome đang gọi NP_Initialize của plugin(). Plugin ví dụ có một kiểm tra để đảm bảo rằng định nghĩa cấu trúc NPNetscapeFuncs được sử dụng trong sự tuân thủ của plugin ít nhất là kích thước tương tự như trình duyệt được cung cấp. Có vẻ như Chrome sử dụng phiên bản 19 của cấu trúc tự nhiên nhỏ hơn phiên bản 22 của Mozilla XUL Runner SDK mới nhất mà tôi đã nhận được npapi.h và npruntime.h.

Các vấn đề liên quan