2016-06-09 24 views
3

Der Versuch, ein NPAPI-Plugin durch Anhängen an den Plugin-Prozess zu debuggen, scheint in 10.11 nicht zu funktionieren.Wie können Sie Safari NPAPI-Plugins in OSX 10.11 debuggen?

mit LLDB Anbringen zeigt:

sudo lldb -p 39337 
(lldb) process attach --pid 39337 
error: attach failed: unable to attach 

Dies scheint sowohl 'Legacy' Webkit für eingebetteten Webkit (mit Plugin-Host mit dem Namen WebKitPluginHost) und 'modern' Webkit in Safari verwendet zu beeinflussen (mit Plugin-Host com.apple.WebKit.Plugin.64 benannt)

Ich habe die "Debugging Restrictions" mit csrutil im Wiederherstellungsmodus deaktiviert, aber das scheint in diesem Fall nicht zu helfen.

+0

Ich habe das gleiche Problem beim Debuggen von Perl-Erweiterungen. Das Ausführen des Systems "Perl" unter "lldb" gibt 'error: process exited mit Status -1 (unable to attach) 'zurück, selbst nachdem die Debugging-Einschränkungen deaktiviert wurden. – nwellnhof

+0

Eine Problemumgehung für Perl besteht darin, die Perl-Binärdatei aus/usr/bin zu kopieren und mit diesem einen Lauf auszuführen. Viele Anwendungen können auf diese Weise angehängt werden (nur nicht von mir, weil der Browser sie direkt startet). – harningt

Antwort

0

Ich habe es nicht speziell in 10.11 versucht, aber ich finde den einfachste Weg, um einen Sperrabschnitt hinzuzufügen, ist zu warten, für Ihr Plugin in dem Startcode debug werden:

#if WAIT_FOR_DEBUGGER 
static bool beingDebugged() { 
    int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()}; size_t mib_size = 4; 
    struct kinfo_proc kp; size_t kp_size = sizeof(kp); 
    int result = sysctl(mib, mib_size, &kp, &kp_size, NULL, 0); 
    return (0 == result) ? (P_TRACED & kp.kp_proc.p_flag) : false; 
} 
#endif 

dann in Startcode irgendwo:

#if WAIT_FOR_DEBUGGER 
    #warning "WILL BLOCK ON P_TRACED" 
    while (!beingDebugged()) 
     sleep(1); 
#endif 

Wenn Sie Schwierigkeiten haben, das richtige Verfahren zu finden, um Sie zu verbinden könnte diese auch Ausgang der PID in eine Datei haben, so können Sie es lesen und finden.

+0

Das ist ein nützliches Element, jedoch verhindern Debugging-Schutzmechanismen im System, dass nichts an den ermittelten Plugin-Prozessen anhaftet. – harningt

+0

Interessant; Das muss neu sein. Ich habe es kürzlich in Safari nicht ausprobiert, da alle meine Plugins bis jetzt noch richtig funktionieren =] – taxilian