Удаленная отладка GDB с помощью gdbserver на zynq zc702: не указан правильный исходный код

Я пытаюсь выполнить удаленную отладку GDB с помощью gdbserver, но не могу заставить отладчик сломаться и вывести правильный исходный код. Я не уверен в том, что могу делать неправильно, поэтому я пишу все, что сделал. Я только начал использовать Linux и все эти вещи две недели назад.

  1. Хост-система для GDB работает Debian использует virtualbox на моем ноутбуке с Windows 7.
  2. Удаленная цель, на которой запущен gdbserver: xilinx zynq zc702 с Debian.
  3. Целевой код был скомпилирован с использованием компилятора CodeSoucery рука-ни-линукс-gnueabi-НКУ, и, соответственно, я использую GDB рука-NONE-Linux-gnueabi-GDB.

  4. Сначала я захожу на цель используя SSH и запустите gdbserver, набрав в терминале:

    root@zynq:/path/on/target# gdbserver localhost:3278 my_app.elf
    
    Process my_app.elf created; pid = 2083
    
    Listening on port 3278
    
  5. Затем я запускаю GDB, набирая в терминале хоста:

    b51957@B51957debian:~$ arm-none-linux-gnueabi-gdb /path/on/host/my_app.elf
    

    GDB запускается нормально без каких-либо предупреждений и также показывает эту строку:

    Эта GDB была настроена как "--host = i686-pc-linux-gnu --target = arm-none-linux-gnueabi".
    
  6. Затем я установил sysroot, набрав на главном терминале:

    (GDB) установить удаленный sysroot: /

  7. Затем я подключаюсь к удаленной цели, набрав в терминале хоста:

    target remote *target IP address*:3278
    

    В терминале хоста я получаю следующий ответ:

    Remote debugging using *target IP address*:3278
    Reading symbols from remote:/lib/ld-linux.so.3...(no debugging symbols found)...done.
    Loaded symbols for remote:/lib/ld-linux.so.3
    

    И в целевом терминале я получаю следующий ответ:

    Remote debugging from host *host IP address*
    
  8. Теперь я прошу его поставить точку останова в строке 23 в main.cpp, набрав в терминале хоста:

    (gdb) break main.cpp:23
    
  9. Затем я позволяю этому продолжаться и затем останавливаюсь на точке останова, а затем пытаюсь перечислить исходный код. Но вместо того, чтобы попасть в мой файл main.cpp, он всегда идет в какой-то стандартный заголовок библиотеки C ++ (возможно, iostream). Вот как выглядит терминал:

    (gdb) c
    
    Continuing.
    
    Breakpoint 1, 0x00009bdc in main ()
    
    (gdb) l
    
    11  // This library is distributed in the hope that it will be useful,
    
    12  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    13  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    

    и так далее…

Обратите внимание, что я использую -g а также -o0 варианты для компиляции, а также -g вариант для компоновщика. Я также попытался добавить папку, содержащую исходные файлы, в исходный путь GDB с помощью команды ‘directory’. Исходный путь уже содержит $cwd а также $cdir, Я не могу понять, почему я до сих пор не вижу свой исходный код.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]