Domanda

Penso che questo potrebbe essere stato chiesto in precedenza, ma non riesco a trovarne uno che soddisfi i miei requisiti.

Sto eseguendo il debug (infatti provando a capire) un grande progetto cercando di analizzare il flusso di codice in vari testuites. Ma quando provo a impostare i punti di interruzione in alcuni file, ottengo l'errore "nessun file di origine denominato nome file trovato".
Quindi la mia domanda è:

  1. gdb può accettare solo punti di interruzione per i file sorgente in cui entra il flusso di codice.?
  2. Posso impostare i punti di interruzione su intere righe di un file con qualcosa come b nomefile: *
  3. Verrà accettato un punto di interruzione nel file di intestazione poiché i file di intestazione vengono appena aggiunti al momento della compilazione?

Qualsiasi approfondimento è più che benvenuto.

Modifica
Ho verificato questi problemi con un po 'di codice Hello World e ho trovato gli stessi risultati indicati in una delle risposte, ma il mio problema nel progetto attuale rimane ancora attivo. Ottengo ancora lo stesso errore anche quando riesco a vedere l'output modificato della stessa riga che non è accettato come breakpoint.

Modifica 2
Ho funzionato ma non capisco come e perché funziona .. ??


(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
No source file named /home/neeraj/BTP/trunk/include/header.h:872
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b /home/neeraj/BTP/trunk/src/driver.cpp:2
Breakpoint 1 at 0x806c61a: file ../../../trunk/src/driver.cpp, line 2.
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
Breakpoint 2 at 0x8052fa0: file ../../../trunk/include/header.h:872, line 872.
(gdb)

Qualche idea più profonda ...?

È stato utile?

Soluzione

L'altra cosa a cui fare attenzione oltre alle librerie condivise è che i nomi dei file di origine gdb sono relativi alla directory in cui è stato compilato il codice. Se non hai compilato con percorsi assoluti, usa il comando dir per aggiungere la directory della compilation all'elenco dei luoghi in cui gdb cerca il codice sorgente.

E un suggerimento: trovo che sono molto più produttivo quando uso il Data Display Debugger (DDD) front-end grafico su gdb .

Altri suggerimenti

  1. Nessun.
  2. Nessun.
  3. Sì.

Assicurati di compilare con l'opzione -g (debug). Assicurarsi che i sourcepath siano impostati correttamente. Usa directory, mostra directory e comandi dir per vedere / impostare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top