Отладчик GNU __text_start () с неверным путем к файлу - PullRequest
0 голосов
/ 25 ноября 2018

Сначала небольшое предисловие: я использую подсистему Windows для Linux и версию GCC Gaisler BCC для кросс-компиляции (иначе «machine-gcc», где machine равно sparc-gaisler-elf в данном случае).

Я скомпилирую простую программу hello world для отладки, подобную этой

$ sparc-gaisler-elf-gcc -g hello.c -o hello

Затем я открываю симулятор для конкретного процессора с помощью отладчика GNU (GDB) в качестве сервера

$ tsim-leon3 -gdb
...
gdb interface: using port 1234
Starting GDB server. Use Ctrl-C to stop waiting for connection.

В другом сеансе bash я запускаю удаленную GDB и подключаюсь к серверу

$ sparc-gaisler-elf-gdb -ex "target extended-remote localhost:1234"
...
Remote debugging using localhost:1234

Это отлично работает.Но если я пытаюсь загрузить исполняемый файл hello, у меня возникает проблема

$ sparc-gaisler-elf-gdb -ex "target extended-remote localhost:1234" hello
...
Remote debugging using localhost:1234

__text_start () at /opt/bcc-2.0.4-gcc/src/libbcc/shared/trap/trap_table_mvt.S:167
167  /opt/bcc-2.0.4-gcc/src/libbcc/shared/trap/trap_table_mvt.S: No such file or directory.
     in /opt/bcc-2.0.4-gcc/src/libbcc/shared/trap/trap_table_mvt.S
Current language:  auto; currently asm

(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /mnt/c/Users/<username>/bcc-2.0.4-gcc/src/examples/hello/hello

Program received signal SIGSEGV, Segmentation fault.
__text_start () at /opt/bcc-2.0.4-gcc/src/libbcc/shared/trap/trap_table_mvt.S:167
167     in /opt/bcc-2.0.4-gcc/src/libbcc/shared/trap/trap_table_mvt.S

Теперь, с моей настройкой подсистемы Windows для Linux, у меня есть конкретный файл, который он ищет по адресу

/mnt/c/Users/<username>/bcc-2.0.4-gcc/src/libbcc/shared/trap/trap_table_mvt.S

вместо /opt/bcc-2.0.4-gcc/...

Как мне узнать, где найти этот файл?


Обновление

Я попытался установить dir в соответствии с занятым русскимответ

(gdb) dir /mnt/c/Users/<user>/bcc-2.0.4-gcc/src/libbcc/shared/trap
Source directories searched: /mnt/c/Users/<user>/bcc-2.0.4-gcc/src/libbcc/shared/trap:$cdir:$cwd

(gdb) list
162             BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 78 - 7B undefined
163             BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 7C - 7F undefined
164
165             /* trap_instruction 0x80 - 0xFF */
166             /* NOTE: "ta 5" can be generated by compiler. */
167             SOFT_TRAP;                                    !  0 System calls
168             SOFT_TRAP;                                    !  1 Breakpoints
169             SOFT_TRAP;                                    !  2 Division by zero
170             FLW_TRAP;                                     !  3 Flush windows
171             SOFT_TRAP;                                    !  4 Clean windows

(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /mnt/c/Users/<user>/bcc-2.0.4-gcc/src/examples/hello/hello

Program received signal SIGSEGV, Segmentation fault.
__text_start () at /opt/bcc-2.0.4-gcc/src/libbcc/shared/trap/trap_table_mvt.S:167
167             SOFT_TRAP;                                    !  0 System calls

Несмотря на то, что он все еще говорит /opt/..., похоже, он нашел нужный файл сейчас.Однако я не знаю, почему это дает ошибку сегментации.

1 Ответ

0 голосов
/ 25 ноября 2018

Как узнать, где найти этот файл?

С помощью команды directory.

(gdb) dir /mnt/c/Users/<username>/bcc-2.0.4-gcc/src/libbcc/shared/trap
(gdb) list  # should find the file in the new location

См. Также путь к источнику и установить путь подстановки .

...