2016-06-09 10 views
3

플러그인 프로세스에 연결하여 NPAPI 플러그인을 디버깅하려는 시도가 10.11에서 작동하지 않는 것으로 보입니다. lldb에 부착어떻게 OSX 10.11에서 Safari NPAPI 플러그인을 디버그 할 수 있습니까?

는 계시 :

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

com.apple.WebKit.Plugin.64라는 이름의 플러그인 호스트 (사파리에서 사용되는 '현대'웹킷 (플러그인 WebKitPluginHost라는 이름의 호스트와) 임베디드 웹킷 사용 모두 '레거시'웹킷에 영향을 미칠 것으로 보인다)

복구 모드에서 csrutil을 사용하여 "디버깅 제한"을 비활성화했지만이 경우 도움이되지 않습니다.

+0

Perl 확장을 디버깅하는 데 동일한 문제가 있습니다. 'lldb'에서'perl' 시스템을 실행하면 디버깅 제한을 해제 한 후에도 오류 : 프로세스가 상태 -1 (접속할 수 없음)에서 종료되었습니다. – nwellnhof

+0

perl의 해결 방법은 perl 바이너리를/usr/bin에서 복사하여 사용하는 것입니다. 많은 응용 프로그램을이 방식으로 연결할 수 있습니다 (브라우저가 직접 브라우저를 시작하기 때문에 광산이 아닙니다). – harningt

답변

0
나는 10.11에 구체적으로 시도하지 않은,하지만 난 쉬운 방법은 플러그인이 시작 코드를 디버깅 할 때까지 기다릴 차단 섹션을 추가하는 것입니다 찾을 수

: 다음

#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 

시작 코드에 곳 :

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

당신은 문제가 읽고 찾을 수 있도록 파일로이 또한 출력 PID를 가질 수 당신에 연결하는 올바른 방법을 찾는이있는 경우.

+0

이것은 유용한 항목이지만 시스템의 디버깅 보호 기능으로 인해 결정된 플러그인 프로세스에 아무 것도 첨부하지 못하게합니다. – harningt

+0

흥미 롭; 그것은 새로운 것이어야합니다. 모든 플러그인이 아직 제대로 작동하고 있으므로 Safari에서 최근에 시도하지 않았습니다.] – taxilian