2012-06-01 11 views
9

Sto provando a eseguire il debug di una semplice applicazione Android su emultor o su un dispositivo e non riesco a fermare il debugger su qualsiasi punto di interruzione impostato. Ho unito gli altri post qui e in tutto il web e ho provato tutti i suggerimenti (Aggiungi debugable: "true" al manifest, stop e avvio adb, Clean all, assicurati di usare il pulsante di debug, non il pulsante di esecuzione, ecc. Ecc.) . Nella prospettiva Debug posso vedere i thread e in DDMS mostra l'icona di debug accanto al dispositivo su cui sto eseguendo il debug. Vedo i punti blu dove ho impostato il breakpoint e la prospettiva Debug li elenca e dice che sono attivi.Debugging Android con Eclipse - No Breakpoint

Ho inserito avvisi appena prima dei punti di interruzione per verificare che il codice venga eseguito.

Iniziare ad impazzire qui. Qualche altro suggerimento? Mi manca qualcosa di semplice ma non ovvio.

AGGIORNAMENTO: Apprezzo le risposte finora. Sfortunatamente non hanno risolto il mio problema. Ho seguito le istruzioni per il debug e ho attivato il debug nel telefono. Inoltre, vedo l'avviso "Waiting for debugger" al telefono all'avvio. In generale tutto dice che sto eseguendo il debug (incluso l'output logcat che ho aggiunto). Semplicemente non si fermerà sui punti di interruzione che ho aggiunto e sono elencati nella scheda punti di interruzione nella prospettiva Debug. Anche solo per ripetere - questo accade quando si esegue il debug sul dispositivo e sull'emulatore. Una cosa che noto è che quando lancio il debugger, ho impostato per aprire Selezione dispositivo Android. Qui la colonna "debug" è vuota per il mio dispositivo - ma se l'emulatore sta eseguendo la colonna di debug dice "Sì". Anche la console afferma che sta tentando di connettersi al debugger. Dovrebbe esserci un log della console che afferma che il debugger è stato connesso correttamente? Non vedo questo.

UPDATE 20120914: Sono stato lontano da questo per un po 'di tempo e mi ero arreso in precedenza. Torna per provare e affrontare questo. Non è ancora risolto. Tutto sopra è ancora attuale - ma un'altra cosa che ho notato. Ho impostato un punto di interruzione del carico di classe sull'attività principale e si ferma qui. Semplicemente non si ferma a nessun punto di interruzione di linea. Ho appena aggiornato l'ultimo JDK 1.7.0_07, Android SDK 20, ADT Plugin 20.0.3. Ho usato il logcat per emettere un messaggio e impostare un breakpoint su questa linea. Vedo il messaggio in logcat quindi so che il codice è in esecuzione. La finestra di debug nella prospettiva di debug mostra anche l'applicazione Android con un numero di thread al di sotto e la finestra Dispositivi nella prospettiva DDMS mostra l'applicazione con l'icona del bug verde accanto ad essa.

Un'altra cosa: quando il debugger sta eseguendo i punti di interruzione di linea, i punti non hanno un segno di spunta sovrapposto (il Punto carico di classe fa!). Sto indovinando che questa è la causa principale - ma non so perché non stanno ottenendo questo. (A proposito, anche skip breakoints non è impostato - i breakpoint non hanno linee attraverso di essi).

Qualsiasi nuovo suggerimento sarebbe apprezzato. Ho bruciato molto tempo su questo. Deve essere qualcosa di ovvio che non vedo.

risposta

3

Android SDK fornisce la maggior parte degli strumenti necessari per eseguire il debug delle applicazioni. Questo collegamento ti introdurrà a Android debugging environment and the debugging tools utilizzato.

Ecco anche un mani su tutorial su debugging an android application.

Se si vuole di debug usando effettiva telefono Android, accendere "USB Debugging" nel dispositivo:

Impostazioni> Applicazioni> Sviluppo e abilitazione debug USB

E roid 4.0:

Impostazioni> Opzioni sviluppatore

e utilizzare Log.d e la vostra Logcat.

1

Eclipse ha una configurazione di esecuzione di debug. Solo se si utilizza la configurazione dell'esecuzione di debug, durante l'avvio verrà collegato un debugger all'applicazione.

L'avvio dell'applicazione (sul dispositivo/emulatore) si interrompe temporaneamente "In attesa di debugger"? In caso contrario, non si avvia l'applicazione utilizzando "configurazione di debug". È il pulsante alla sinistra immediata della configurazione di esecuzione (discesa).

5

Ora mi sento un po 'stupido a scrivere questo post. Ma alla fine ho risolto il mio problema. Il problema è che non puoi impostare i breakpoint nel codice Javascript. La parte che ho tralasciato involontariamente è che sto scrivendo un'app per Android utilizzando PhoneGap. Quasi tutto il codice è Javascript. Sono così abituato a sviluppare applicazioni Web .NET in Visual Studio. Ho solo pensato che fosse possibile impostare i breakpoint nel codice javascript. I punti di interruzione nel codice Java possono funzionare correttamente. Comunque, grazie per eventuali suggerimenti. Non so se ci sono altri sviluppatori .NET che cercano lo sviluppo di PhoneGap - ma forse questo post li aiuterà.

1

Prova jsHybugger: http://www.jshybugger.org/ per l'impostazione dei punti di interruzione javascript in Eclipse per dispositivi (mobili) remoti.

Consente di impostare punti di interruzione, singlestep, rilevare eccezioni e interagire con l'ambiente JS/DOM. Puoi usarlo da Eclipse o da un debugger compatibile con Chrome o Chrome sul desktop remoto. Può essere utilizzato con app che creano la propria webView.

Tuttavia, è necessario installare alcuni file, ma probabilmente non è più complicato da usare rispetto a weinre. modifica in modo estensivo i file JS (al volo, in modo trasparente per l'utente) per abilitare tutto questo debug - WebKit dovrebbe davvero supportare il debug di javascript in modo nativo.

+0

Questa non è una risposta pertinente alla domanda. Almeno posso vedere webview/phonegap/javascript menzionato in qualsiasi altro posto rispetto ad un'altra risposta. – laalto

+2

Penso che sia rilevante in quanto stava chiedendo in ultima analisi su come eseguire il debug di javascript in un'app (non java in un'app come la domanda iniziale potrebbe aver implicato. Questo è l'unico modo che ho trovato per poter eseguire il debug (breakpoint/singlestep) javascript (in Eclipse). – Ribo

0

Verificare di non aver saltato tutti i punti di interruzione (Esegui -> Salta tutti i punti di interruzione).

0

Ribo lo menziona già nella sua risposta, ma poiché questa domanda e le risposte riguardano il debug delle applicazioni di PhoneGap. Devi certamente guardare weinre (WEb INspector REmote). http://people.apache.org/~pmuellr/weinre/docs/latest/

Oggi PhoneGap anche ha il proprio weinre abbracciato in PhoneGap accumulo ... http://debug.phonegap.com/

Io sono un grande fan di questo ... (nota se si utilizza weinre sul computer locale e cercando di effettua il debug di un'app PhoneGap via wifi ... assicurati che il tuo dispositivo locale sia sulla stessa rete wifi!)