Continuo recebendo essa mensagem de erro ao tentar adicionar um ponto de interrupção no gdb.
Usei estes comandos para compilar:
gcc -g main.c utmpib2.c -o main.o
and:
cc -g main.c utmpib2.c -o main.o
and also:
g++ -g main.c utmpib2.c -o main.o
Também tentei "-ggdb" em vez de "-g" e ainda recebo essa mensagem de erro.
Em seguida, executo o gdb:
$gdb
No gdb:
(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.
Respostas:
Em primeiro lugar, o que você tem é um programa totalmente compilado, não um arquivo-objeto, então elimine a
.o
extensão. Agora, preste atenção ao que a mensagem de erro diz, ela diz exatamente como corrigir o seu problema: "Nenhuma tabela de símbolos está carregada. Use o comando" arquivo " ."Ou apenas passe o programa na linha de comando.
fonte
Você deve adicionar o parâmetro extra -g, que gera informações de depuração no nível de origem. Será parecido com:
Depois disso, você pode usar o gdb de maneira comum.
fonte
Estou com o mesmo problema e segui este Post , resolveu meu problema.
Siga as 2 etapas a seguir:
-O0
-ggdb
sinalizador ao compilar seu programaBoa sorte!
fonte
Sempre que
gcc
a máquina de compilação egdb
a máquina de teste têm versões diferentes , você pode estar enfrentando incompatibilidade de formato de debuginfo .Para corrigir isso, tente fazer o downgrade do formato debuginfo:
Ou combine
gdb
com o quegcc
você está usando.fonte
Eu encontrei esse problema esta manhã porque usei o mesmo executável em sistemas operacionais DIFERENTES: após compilar meu programa com
gcc -ggdb -Wall test.c -o test
no meu Mac (10.15.2), executeigdb
com o executável no Ubuntu (16.04) no meu VirtualBox.Correção: recompilar com o mesmo comando no Ubuntu, então você deve estar bem.
fonte