2012-05-10 6 views
5

Sto facendo una classe di SO basata su xv6 e ho scritto un programma che deve essere eseguito su di esso.Debug di codice utente su xv6 con gdb

So che posso eseguire il debug del codice del kernel con make qemu-gdb ma non sono sicuro di come eseguire il debug del mio programma utente.

Diciamo che voglio eseguire il debug di cat, come farei per farlo?

Grazie

P.S. non c'è un tag xv6? questa domanda dovrebbe andare anche qui?

+0

': file di cat',': rompere principale ',' run' ottiene qualcosa? – shevski

+0

Ok, ora mi sento davvero stupido perché ero sicuro di averlo provato. Ma ora penso che potrebbe essere che ho provato 'load' invece. Grazie! L'ho cercato ovunque online, ho anche mandato via email alcune persone, nessuno poteva dirmi questo ... (Rispondo e accetterò.) –

risposta

5

file cat, break main, continue

semi riferimento running and debugging xv6

+0

':' non sono necessari, ma funziona! –

+0

dispiace vim notazione – shevski

+0

Quando ho provato quello che dovevo fare file '_cat rompere principale CONTINUE Questo perché _cat è il nome del file sul computer host Tra l'altro questo è gestito nel gdb finestra (così hai eseguito make qemu-gdb, quindi in un'altra finestra hai eseguito il kernel gdb). –

5

Dal dir xv6 primo livello:

  1. Esegui l'emulatore in modalità debug (supponendo che non X11): make qemu-nox-gdb

  2. Nell'altro terminale è sufficiente eseguire il debugger caricamento dei simboli del kernel con: gdb kernelQuesto è importante, altrimenti il ​​debugger sarà confuso tra i simboli del kernel ee programma utente, per esempio main()

  3. Dalla corsa interfaccia gdb: (gdb) target remote localhost:26000 dove 26000 è il TCP porta che il rapporto n. 1 alla fine (questo potrebbe cambiare).

  4. Caricare l'exec utente con (gdb)file user_program

  5. Posizionare un punto di interruzione (gdb) break main e continuare con (gdb) continue

  6. ecc ...