2013-06-07 16 views
5

Il mio software utilizza il segnale SIGUSR2 e sto utilizzando LLDB (sotto Xcode 4.6.2) come debugger. Vorrei disabilitare LLDB da stoping a SIGUSR2 e sono state facendo in modo da utilizzare il comando:Disabilitare i segnali all'inizializzazione LLDB

process handle --pass true --stop false --notify true SIGUSR2 

Sto cercando un modo per avere LLDB eseguire sempre questo comando all'avvio. Ho esaminato l'aggiunta di qualcosa sulla falsariga di settings append target.process.extra-startup-command process nel mio file .lldbinit, ma mentre questo modifica il valore dell'impostazione target.process.extra-startup-command (come evidenziato dal comando settings show), sono incerto se/come può usare questa impostazione per eseguire sempre il comando process handle per disabilitare il segnale SIGUSR2.

Sono a conoscenza della "soluzione" pubblicata qui: Permanently configuring LLDB (in Xcode 4.3.2) not to stop on signals. Sto cercando comunque una soluzione più elegante, se ne esiste una.

risposta

4

Attualmente il suggerimento di farlo in un comando di breakpoint su main è la soluzione più elegante disponibile.

gdb aveva questa visione del mondo in cui tutti i processi, indipendentemente dal sistema in cui si trovavano, rispondevano magicamente ai segnali UNIX. Quindi era logico dire cosa sarebbe successo quando il processo ha ricevuto un SIGINT prima che tu avessi persino un processo. In lldb, il processo, quando viene creato, ci dirà quali sono i suoi segnali e i loro comportamenti di default. È bello, tranne che ora non esiste un luogo naturale in cui archiviare le opzioni di configurazione per i comportamenti del segnale prima di avere un processo. Questo è solo qualcosa che deve essere aggiunto.

La possibilità di attivare "eventi del ciclo di vita del processo", non solo "avvio del processo" ma "uscita del processo" e "carico della libreria condivisa" ecc. Sarebbe un'aggiunta eccellente. Questa funzione è qualcosa che sarebbe bello presentare una richiesta di miglioramento (http://bugreport.apple.com/) per, poiché i bug come questo fungono da voti per le funzionalità.

BTW, target.process.extra-startup-command fa qualcosa di completamente diverso. Permette di anteporre alcuni comandi alla sequenza che lldb invia al suo agente di debug (ad es. Debugserver) prima di iniziare l'esecuzione. Il suo uso principale è quello di attivare la registrazione più debugserver.