在zynq zc702上使用gdbserver进行GDB远程调试:未列出正确的源代码

时间:2014-10-09 17:46:19

标签: c++ linux gdb remote-debugging gdbserver

我正在尝试使用gdbserver进行GDB远程调试,但无法让调试器中断并列出正确的源代码。我不确定我可能做错了什么,所以我写的是我所做的一切。我两周前刚开始使用linux和所有这些东西。

  1. GDB的主机系统在我的基于Windows 7的笔记本电脑上使用virtualbox运行 Debian
  2. 运行gdbserver的远程目标是带有Debian的xilinx zynq zc702
  3. 目标代码是使用CodeSoucery编译器 arm-none-linux-gnueabi-gcc 编译的,相应地我使用的GDB是 arm-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正常启动时没有任何警告,并且还显示以下行:

    This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi".
    
  6. 接下来,我通过在主机终端上键入来设置sysroot:

    (gdb)设置sy​​sroot remote:/

  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. 现在我要求它通过输入主机终端在main.cpp的第23行设置一个断点:

    (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
    

    依旧......

  10. 请注意,我使用-g-o0选项进行编译,并使用-g选项进行编译。我还尝试使用'directory'命令将包含源文件的文件夹添加到GDB源路径。源路径已包含$cwd$cdir。我无法弄清楚为什么我仍然无法看到我的源代码。

0 个答案:

没有答案