【SoC FPGA学习】四、使用gdbserver远程调试Linux应用程序
gdbserver远程调试流程
- 首先保证电脑能够网络访问开发板(参考第三节进行网络配置)
- 使用passwd命令,为root账号设置密码
- 将希望调试的程序拷贝到开发板中
- 为程序添加可执行权限
chmod 777 hello_world
- 在DS-5软件里面设置调试相关配置,在菜单栏选择
Run->Debug Configurations
打开配置界面- Debugger:
gbdserver
- 选择
gdb.exe
- Connection:
TCP、IP
- Debugger:
- 在开发板上输入以下命令启动调试:
gdbserver :10000 hello_world
- 在DS-5里面点击debug开始调试
- 断点、查看变量、单步运行
参考教程中的以下章节
一、编写测试程序
编写mian.c
如下
#include <stdio.h>
int main(int argc, char* argv[])
{
int a=1, b=2, c=3;
printf("Hello World\r\n");
c = a+b;
b++;
c = c+b;
printf("c=%d\r\n", c);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
二、DS-5配置
点击菜单栏的Run选项,然后选择其中的Debug Configurations…,如下图所示
双击其中的C/C++ Application,会自动识别到hello_world程序
选择Debugger标签,
然后选择下方的Select other…
然后选择Change Workspace Settings
点击C/C++ Application下的[Debug],然后选择下面的Legacy Create Process Launcher,然后OK即可,如下图所示
然后切换到Debugger标签,将其中的Debugger:选择为gdbserver
将开发板光盘配套软件中的arm-linux-gnueabihf-gdb.exe
拷贝到Quartus的D:\intelFPGA\17.1\embedded\ds-5\sw\gcc\bin
文件下,如下图所示
然后将上述添加的arm-linux-gnueabihf-gdb.exe
,添加到配置中,如下图所示
然后将Connection下的选项配置为如下图所示,配置完成后点击Apply进行保存,先不要点击Debug!!!
接着在串口终端中,输入gdbserver :10000 hello_world
,如下图所示
三、DS-5的Debug过程
然后回到DS-5,点击其中的Debug,接着会弹出切换Debug视图的提示,这里选择Yes
切换视图后的样子,如下图所示
在串口终端也会显示开启远程调试的打印信息
箭头默认指在第一行,前面的箭头表示程序运行的位置
从Variables窗口可以查看到变量值,如下图所示
点击其中的step over可以进行单步运行,如下图所示
可以看到在变量区变量的变化,如下图所示
也可以在串口终端看到信息的打印,如下图所示
调试完毕后,如何退出调试视图到普通视图呢?在软件的右上角,点击如下图所示选项即可!
然后,可以依次按照如下图所示步骤还原最最初的视图界面
EDS-5中文注释字体过小解决办法:
解决无法打断点的问题
问题:在DS-5中打断点会有如下提示信息?
解决方案:
参考:http://www.corecourse.cn/forum.php?mod=viewthread&tid=27911&highlight=%E6%96%AD%E7%82%B9
在DS5中调试Linux程序时候无法设置断点,这个主要是软件的断点类型默认为DS5类断点,而非C++类断点导致的。
如需设置断点并调试,只需要在设置断点处先鼠标右击,可以看到默认的是DS-5 C/C++ Breakpoints。选择Breakpoints为C/C++ Breakpoints即可正常设置断点了。如下图所示:
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/107823306
- 点赞
- 收藏
- 关注作者
评论(0)