Ciao a tutti, sto eseguendo il debug di un'applicazione C++ su mac os 10.5. Occasionalmente, farò qualcosa di negativo e causerò un segfault o un'operazione altrimenti illegale. Ciò comporta l'app in sospeso per un po 'e infine una finestra di dialogo di sistema che mi avvisa del crash. Il tempo di attesa tra "blocco" e finestra di dialogo è significativo; pochi minuti. Se provo a forzare l'uscita dall'applicazione o kill -9
dalla riga di comando, non succede nulla. Se avvio l'app dal debugger (gdb), in caso di crash torno al prompt di gdb e posso uscire in modo pulito dal processo. Questo non è l'ideale anche se gdb è lento da caricare.Debug e uccisione di app su Mac OS X?
In ogni caso, potete consigliare qualcosa? C'è un modo per disattivare il meccanismo di segnalazione degli arresti anomali in OS X?
Grazie.
Aggiornamento 1: Ecco gli zombi che vengono lasciati da un'esecuzione XCode. Apparentemente xcode non può fermarli correttamente neanche.
1 [email protected]:~$ ps auxw|grep -i Reader 2 eightieight 28639 0.0 0.0 599828 504 s004 R+ 2:54pm 0:00.00 grep -i reader 3 eightieight 28288 0.0 1.1 1049324 45032 ?? UEs 2:46pm 0:00.89 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 4 eightieight 28271 0.0 1.1 1049324 45036 ?? UEs 2:45pm 0:00.89 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 5 eightieight 28146 0.0 1.1 1049324 44996 ?? UEs 2:39pm 0:00.90 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 6 eightieight 27421 0.0 1.1 1049328 45024 ?? UEs 2:29pm 0:00.88 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader 7 eightieight 27398 0.0 1.1 1049324 45044 ?? UEs 2:28pm 0:00.90 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader
Stai usando XCode? In tal caso, non dovresti visualizzare la finestra di dialogo Crash Reporter. Inoltre, stai costruendo un'applicazione basata su GUI o solo un'applicazione di console? Modifica: casualmente, nel caso in cui si utilizzi XCode, se si verifica un errore EXEC_BAD_ACCESS durante l'esecuzione di un'app GUI in XCode, è sufficiente premere l'icona di arresto per terminare immediatamente l'app in esecuzione. – Tom
Sì, se eseguo le mie app in XCode o gdb, tutto funziona correttamente. Quando ottengo un segfault, l'app ritorna nel debugger e tutto è ottimo. Tuttavia, se eseguo l'app dalla console, sembra che si blocchi per sempre. – EightyEight
Come stai invocando l'app?In genere, se un'app si blocca, game over, il processo è morto. Tuttavia, se sei riuscito a invocarlo da qualche altro ambiente, forse alcune risorse per quel processo sono tenute aperte e non possono lasciarlo andare ancora e stai aspettando che il processo genitore faccia qualcosa per primo (e potrebbe avere il problema di scoprire che qualcosa è andato storto). –