gdb :“기호 테이블이로드되지 않았습니다.”


90

gdb에 중단 점을 추가하려고 할 때이 오류 메시지가 계속 표시됩니다.

다음 명령을 사용하여 컴파일했습니다.

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

나는 또한 "-g"대신 "-ggdb"를 시도했는데 여전히 그 오류 메시지가 나타납니다.

그런 다음 gdb를 실행합니다.

$gdb

gdb에서 :

(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.

오, 나는 main.o를 의미했습니다. 업데이트했습니다. "-ggdb"도 사용해 보았지만 여전히 동일한 문제가 발생합니다.
user994165 2012

gcc와 gdb를 어떻게 호출하는지 정확히 보여주십시오. 오류를 방지하려면 복사하여 붙여 넣으십시오.
Piotr Praszmo 2012

1
명령을 업데이트했습니다. 정말 이상 해요. 방금 작동하기 시작했습니다. 이전에 "gdb a.out"을 사용하여 gdb에 액세스하고 있었는데 a.out이 존재하지 않거나 뭔가에 대한 오류 메시지가 나타납니다. 그런 다음 "exec-file"로 전환했습니다. 이제 a.out으로 시도했는데 "이 GDB는"i486-linux-gnu "로 구성되었습니다"라는 메시지가 표시되고 중단 점을 설정할 수 있습니다.
user994165

오 이런, 잘못된 파일 a.out을 지정했습니다. 파일 이름을 내 이름으로 변경할 생각없이 gdb 자습서를 따랐습니다.
user994165 2012

답변:


58

우선, 당신이 가지고있는 것은 개체 파일이 아니라 완전히 컴파일 된 프로그램이므로 .o확장명을 삭제하십시오 . 이제 오류 메시지가 말씀에 관심을 지불, 그것은 당신을 알려줍니다 정확하게 문제를 해결하는 방법 : "어떤 심볼 테이블이로드되지 않습니다. 사용"파일 "명령을 ."

(gdb) exec-file test
(gdb) b 2
No symbol table is loaded.  Use the "file" command.
(gdb) file test
Reading symbols from /home/user/test/test...done.
(gdb) b 2
Breakpoint 1 at 0x80483ea: file test.c, line 2.
(gdb) 

또는 명령 줄에서 프로그램을 전달하십시오.

$ gdb test
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
[...]
Reading symbols from /home/user/test/test...done.
(gdb) b 2
Breakpoint 1 at 0x80483ea: file test.c, line 2.
(gdb) 

죄송합니다. 저는 gdb 멍청이입니다. 이 솔루션 (이 질문에 대한 다른 솔루션은 없음)은 Windows의 WSL에서 gdb와 함께 작동합니다. 제안 사항이 있습니까?
aderchox

140

소스 레벨 디버그 정보를 생성하는 추가 매개 변수 -g를 추가해야합니다. 다음과 같이 표시됩니다.

gcc -g prog.c

그 후 일반적인 방법으로 gdb를 사용할 수 있습니다.


26
제 경우에는이 답변이 문제를 해결했지만 수락 된 답변은 차이가 없었습니다.
frankster 2014 년

8

나는 같은 문제가 있고이 게시물을 따랐으며 내 문제가 해결되었습니다.

다음 두 단계를 따르십시오.

  1. 최적화 수준이 -O0
  2. -ggdb프로그램을 컴파일 할 때 플래그 추가

행운을 빕니다!


0

gcc컴파일 머신과 gdb 테스트 머신에서 버전다를 때마다 debuginfo 형식이 호환되지 않을 수 있습니다 .

이를 해결하려면 debuginfo 형식을 다운 그레이드 해보십시오.

gcc -gdwarf-3 ...
gcc -gdwarf-2 ...
gcc -gstabs ...
gcc -gstabs+ ...
gcc -gcoff ...
gcc -gxcoff ...
gcc -gxcoff+ ...

또는 사용중인 gdb것과 일치 하십시오 gcc.


0

오늘 아침에 다른 OS에서 동일한 실행 파일을 사용했기 때문에이 문제를 만났습니다. gcc -ggdb -Wall test.c -o testMac (10.15.2)에서 프로그램을 컴파일 한 후 gdbVirtualBox에서 Ubuntu (16.04)의 실행 파일로 실행했습니다.

수정 : Ubuntu에서 동일한 명령으로 다시 컴파일하면 괜찮을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.