Errore Debug

di il
7 risposte

Errore Debug

Buongiorno, sono nuovo del forum, da qualche giorno testando un programma con il debug mi sono trovato di fronte ad un problema alquanto strano, ovvero nel caso in cui avanzo nell'esecuzione del programma, mi si presenta un schermata "Disassembly" la quale non mi permette di verificare il valore delle variabili e non mi consente di continuare nell'esecuzione del programma. Premetto che io uso ubuntu non so se si tratta di un'errore dovuto alla non presenza di qualche libreria. Le schermate Disassembly presentano i seguenti errori: __memcpy_sse2_unaligned () e Source not found, file: ioputs.c.
Grazie in anticipo

7 Risposte

  • Re: Errore Debug

    Ma di quale programma parli?
  • Re: Errore Debug

    Non puoi disassemblare la funzione perché non è stata compilata col -g
    quindi devi saltare le librerie tipo in questo caso memcpy salti
  • Re: Errore Debug

    Un esempio di programma che non a fare il debug è:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char** argv) {
        
        printf("Hello word\n\n");
        printf("hello\n");
        
        return (EXIT_SUCCESS);
    }
    
    grazie mille
  • Re: Errore Debug

    Come debugghi?
    illustra passo dopo passo, ovviamente se provi ad entrare dentro alla printf ricevi errore, come spiegato sopra
  • Re: Errore Debug

    Io debaggo posizionando un breakpoint sulla printf, nel momento in cui mi porto nell'esecuzione della printf mi compare una schermata del genere.
    !Source not found, file: ioputs.c, line: 34 
    _IO_puts()
    _IO_puts+0: push   %r12
    _IO_puts+2: mov    %rdi,%r12
    _IO_puts+5: push   %rbp
    _IO_puts+6: push   %rbx
    !Source not found, file: ioputs.c, line: 35 
    _IO_puts+297: mov    $0xffffffff,%ebp
    _IO_puts+302: jmp    0x7ffff7a84f0c <_IO_puts+220>
    _IO_puts+304: mov    %rbx,%rdi
    _IO_puts+307: jmpq   0x7ffff7a84eaa <_IO_puts+122>
    !Source not found, file: ioputs.c, line: 36 
    _IO_puts+7: callq  0x7ffff7a9dac0 <strlen>
    _IO_puts+19: mov    %rax,%rbp
    !Source not found, file: ioputs.c, line: 37 
    _IO_puts+12: mov    0x34fa2d(%rip),%rbx        # 0x7ffff7dd4870 <stdout>
    _IO_puts+22: mov    (%rbx),%eax
    _IO_puts+24: mov    %rbx,%rdi
    _IO_puts+27: and    $0x8000,%eax
    _IO_puts+32: jne    0x7ffff7a84eaf <_IO_puts+127>
    _IO_puts+34: mov    0x88(%rbx),%r8
    _IO_puts+41: mov    %fs:0x10,%rdx
    _IO_puts+50: cmp    0x8(%r8),%rdx
    _IO_puts+54: je     0x7ffff7a84f60 <_IO_puts+304>
    _IO_puts+60: mov    $0x1,%esi
    _IO_puts+65: cmpl   $0x0,0x3541fc(%rip)        # 0x7ffff7dd9074 <__libc_multiple_threads>
    _IO_puts+72: je     0x7ffff7a84e87 <_IO_puts+87>
    _IO_puts+74: lock cmpxchg %esi,(%r8)
    _IO_puts+79: jne    0x7ffff7a84fbf <_L_lock_47>
    _IO_puts+85: jmp    0x7ffff7a84e91 <_IO_puts+97>
    _IO_puts+87: cmpxchg %esi,(%r8)
    _IO_puts+91: jne    0x7ffff7a84fbf <_L_lock_47>
    _IO_puts+97: mov    0x88(%rbx),%rax
    _IO_puts+104: mov    0x88(%rbx),%r8
    _IO_puts+111: mov    0x34f9ca(%rip),%rdi        # 0x7ffff7dd4870 <stdout>
    _IO_puts+118: mov    %rdx,0x8(%rax)
    _IO_puts+122: addl   $0x1,0x4(%r8)
    !Source not found, file: ioputs.c, line: 38 
    !Source not found, file: ioputs.c, line: 39 
    _IO_puts+288: cmp    $0xffffffff,%eax
    _IO_puts+291: je     0x7ffff7a84ec7 <_IO_puts+151>
    !Source not found, file: ioputs.c, line: 40 
    _IO_puts+127: mov    0xc0(%rdi),%eax
    _IO_puts+133: test   %eax,%eax
    _IO_puts+135: jne    0x7ffff7a84f50 <_IO_puts+288>
    _IO_puts+141: movl   $0xffffffff,0xc0(%rdi)
    !Source not found, file: ioputs.c, line: 41 
    _IO_puts+151: mov    0xd8(%rdi),%rax
    _IO_puts+158: mov    %rbp,%rdx
    _IO_puts+161: mov    %r12,%rsi
    _IO_puts+164: callq  *0x38(%rax)
    _IO_puts+167: cmp    %rax,%rbp
    _IO_puts+170: jne    0x7ffff7a84f59 <_IO_puts+297>
    !Source not found, file: ioputs.c, line: 42 
    _IO_puts+172: mov    0x34f98d(%rip),%rdi        # 0x7ffff7dd4870 <stdout>
    _IO_puts+179: mov    0x28(%rdi),%rax
    _IO_puts+183: cmp    0x30(%rdi),%rax
    _IO_puts+187: jae    0x7ffff7a84f68 <_IO_puts+312>
    _IO_puts+189: lea    0x1(%rax),%rdx
    _IO_puts+193: mov    %rdx,0x28(%rdi)
    _IO_puts+197: movb   $0xa,(%rax)
    _IO_puts+312: mov    $0xa,%esi
    _IO_puts+317: callq  0x7ffff7a90220 <__GI___overflow>
    _IO_puts+322: add    $0x1,%eax
    _IO_puts+325: je     0x7ffff7a84f59 <_IO_puts+297>
    _IO_puts+327: jmpq   0x7ffff7a84ef8 <_IO_puts+200>
    !Source not found, file: ioputs.c, line: 43 
    _IO_puts+200: add    $0x1,%rbp
    _IO_puts+204: mov    $0x7fffffff,%eax
    _IO_puts+209: cmp    $0x7fffffff,%rbp
    _IO_puts+216: cmova  %rax,%rbp
    !Source not found, file: ioputs.c, line: 44 
    !Source not found, file: ioputs.c, line: 45 
    !Source not found, file: ioputs.c, line: 46 
    !Source not found, file: ioputs.c, line: 47 
    _IO_puts+277: pop    %rbx
    _IO_puts+278: mov    %ebp,%eax
    _IO_puts+280: pop    %rbp
    _IO_puts+281: pop    %r12
    _IO_puts+283: retq   
    _IO_puts+284: nopl   0x0(%rax)
    _IO_puts+332: testl  $0x8000,(%rbx)
    _IO_puts+338: mov    %rax,%rsi
    _IO_puts+341: jne    0x7ffff7a84fb7 <_IO_puts+391>
    
    Questa schermata non mi consente di continuare l'esecuzione del programma.
    grazie mille
  • Re: Errore Debug

    Inanzitutto ricordati di compilare col flag -g.
    Quando compili con -g inserisci nel programma informazioni che servono al debug che altrimenti non sarebbero inserite.
    Tutte le funzioni che tu usi quando includi gli header <std...> sono all'interno di libC questa libreria viene linkata automaticamente dal compilatore, però la seguente libreria non è stata compilata con -g e quindi non ha le informazioni per il debug, questo significa che se provi a debuggare una funzione dello standard c o di un qualsiasi codice compilato senza -g otterrai degli errori.
    Ora le soluzioni sono 2
    1) compili la libC con il flag -g (NON FARLO)
    2) salti quelle funzioni perchè tanto sono perfette e quindi non serve il deubug,
    Considerato il punto due, quando arrivi al tuo breakpoint scrivi
    next
    next, eseguirà il codice senza però entrarci dentro in questo modo potrai continuare il tuo debug.
  • Re: Errore Debug

    Scusatemi non mi sono spiegato bene. Il mio problema è che quando eseguo un programma con il debug entro in una nuova scheda (disasembly) che non mi consente di effettuare nessun tipo di operazione, bloccando in tal modo l'esecuzione del programma. Premetto che io uso come ambiente di sviluppo netbeans, questo problema si è presentato solo dopo aver reinstallato sul computer ubuntu 14.04 lts, precedentemente possedevo ubuntu 12.04 e questo problema non c'era. Per tale motivo io non riesco a capire il perchè prima funzionava ed ora no, essendo che ho installato la stessa versione di netbeans presente sul vecchio OS. Mi scuso per il disturbo.
    grazie mille
Devi accedere o registrarti per scrivere nel forum
7 risposte