programing

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

goodsources 2022. 9. 1. 23:24
반응형

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

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.

소스 레벨의 디버깅 정보를 생성하는 파라미터 -g를 추가해야 합니다.다음과 같이 표시됩니다.

gcc -g prog.c

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

우선, 당신이 가지고 있는 것은 오브젝트 파일이 아닌 완전히 컴파일된 프로그램입니다.따라서.o내선 번호이 에러 메세지에 주의해 주세요.이 메시지는 문제를 해결하는 방법을 정확하게 설명합니다.「기호 테이블이 로드되어 있지 않습니다."file" 명령사용합니다.

(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) 

나도 같은 문제가 있고 이 포스트를 팔로우했더니 내 문제가 해결됐어.

다음의 2개의 순서에 따릅니다.

  1. 최적화 레벨이 다음과 같은지 확인합니다.-O0
  2. 더하다-ggdb프로그램을 컴파일할 때 플래그 지정

행운을 빕니다.

오늘 아침 이 문제가 발생한 것은 다른 OS에서 동일한 실행 파일을 사용했기 때문입니다.프로그램 컴파일 후gcc -ggdb -Wall test.c -o testMac(10.15.2)에서gdbUbuntu(16.04)의 실행 파일을 VirtualBox에 저장합니다.

수정: Ubuntu에서 동일한 명령어로 다시 컴파일하면 됩니다.

언제든지gcc컴파일 기계와gdb테스트 머신의 버전이 다르면 debuginfo 형식의 비호환성이 발생할 수 있습니다.

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

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

또는 일치합니다.gdb에게gcc사용하고 있습니다.

언급URL : https://stackoverflow.com/questions/9245685/gdb-no-symbol-table-is-loaded

반응형