Come posso eseguire il debug di un'applicazione che si blocca su OS X?

4

Ho installato un gioco da Steam sul mio Mac (Crusader Kings II). La patch più recente dello sviluppatore si è bloccata e si è bloccata sul mio Mac, e mi piacerebbe contribuire a fornire allo sviluppatore tutte le informazioni di debug possibili (sono anch'io uno sviluppatore iOS).

Uno dei problemi con il gioco ha comportato il blocco del gioco. Per facilitare il debug, ho utilizzato il Time Profiler di Xcode Instruments e l'ho allegato al gioco. Quando si è bloccato, ho potuto vedere che cosa stava usando esattamente il tempo del processore e l'ho segnalato allo sviluppatore.

Tuttavia, l'altro problema con il gioco è un arresto anomalo del desktop. Normalmente, quando le applicazioni (come Xcode) si bloccano completamente, OS X mi fornirà un rapporto di errore che includerà informazioni utili, come la traccia dello stack. Tuttavia, quando questo gioco si blocca, non ottengo nulla. Scompare completamente. Il processo non è più presente nell'elenco Forza Esci, ma non ricevo alcun rapporto di arresto anomalo.

C'è un modo, usando Xcode Instruments, o qualsiasi altro mezzo, per determinare esattamente in quale stato si trova l'applicazione nell'istante appena prima che si blocchi?

Il mio computer è un Mac Mini (modello della fine del 2012) e sono su OS X 10.10.1 se questo è importante.

    
posta nhgrif 09.12.2014 - 23:56
fonte

1 risposta

1

Un modo possibile sarebbe eseguire:

sudo dtruss -n <app_executable>

dove <app_executable> è il nome del file eseguibile nel pacchetto di app nella cartella Contents\MacOS all'interno dell'app.

Ad esempio, se vuoi eseguire il debug di iTunes, devi prima trovare il nome dell'eseguibile:

ls -alh /Applications/iTunes.app/Contents/MacOS/

drwxr-xr-x  5 root wheel 170 Mar 30 21:01 .
drwxr-xr-x 11 root wheel 374 Mar 30 21:01 ..
drwxr-xr-x  3 root wheel 102 Mar 30 21:02 iTunesHelper.app
-rwxr-xr-x  1 root wheel 29M Mar 29 02:01 iTunes <<<<<<<< this one
-rwxr-xr-x  1 root wheel 18K Mar 29 02:00 iTunesASUHelper

Puoi farlo anche facendo clic con il pulsante destro del mouse su un'app in Finder e selezionando Mostra contenuto pacchetto .

Una volta capito che è iTunes puoi usare il seguente comando:

sudo dtruss -n iTunes

Questo mostrerà molte informazioni di basso livello, ma potrebbe contenere qualcosa di utile per identificare la causa di un incidente.

Altre utilità integrate potenzialmente utili sono: iosnoop , iotop , opensnoop , execsnoop , opensnoop che sono tutti basati su dtrace che è anche utilizzabile da solo.

    
risposta data 10.04.2017 - 21:09
fonte

Leggi altre domande sui tag