平台网站很难做,温州企业做网站,怎么免费创建一个网站,注册公司如何做网站目录 前言
实现 1、内核配置 2、GDB移植 3、准备调试程序 4、开始调试 前言 gdb调试器是基于命令行的GNU项目调试器#xff0c;通过gdb工具我们可以实现许多调试手段#xff0c;同时gdb支持多种语言#xff0c;兼容性很强。 在桌面 Linux 系统#xff08;如 Ubuntu、Cent…目录 前言
实现 1、内核配置 2、GDB移植 3、准备调试程序 4、开始调试 前言 gdb调试器是基于命令行的GNU项目调试器通过gdb工具我们可以实现许多调试手段同时gdb支持多种语言兼容性很强。 在桌面 Linux 系统如 Ubuntu、CentOS 等上我们通常可以直接运行 gdb 来调试程序。然而在嵌入式系统中由于芯片性能较弱直接运行 gdb 不太现实除非是性能较强的嵌入式芯片。因此我们通常在 PC 端运行 gdb 工具源码也在 PC 端而对应的可执行文件则放在开发板上运行。为了实现这一点我们需要在开发板上运行gdbserver通过网络与 PC 端的 gdb 进行通信。因此要在 PC 上通过 gdb 调试嵌入式程序需要两个工具gdb 和 gdbserver其中 gdb 在 PC 上运行gdbserver 则需要移植到开发板上运行。 一般的交叉编译器已经自带了GDB工具主要为gdb与gdbserver。在交叉编译器安装目录的bin目录内就有这两个工具。需要注意的是不同的交叉编译工具链编译的可执行文件是不一样的要注意开发平台上的文件系统编译使用的是什么交叉编译工具链不然在执行gdbserver的时候会一直报错说找不到文件以及“During startup program exited with code 127”的报错信息。 实现
平台T113
服务器Ubuntu 16.04
交叉编译器gcc-arm-linux-gnueabi 1、内核配置
Kernel hacking ---[*] Kernel debugging[*] KGDB: kernel debugger[*] Compile the kernel with debug info[*] KGDB: use kgdb over the serial console2、GDB移植 进入交叉编译器安装目录的bin目录内可以看到里面自带了gdbserver工具将其放置到开发平台的根文件系统的/usr/bin目录即可。 3、准备调试程序 简单编写一个应用程序使用交叉编译器编译成可执行文件记得要加上“-g”表示编译的时候加上调试信息编译后使用scp传输到开发平台上。
#include stdio.h
#include unistd.hint main(int argc, char *argv[])
{unsigned int times 0;for (int i0; i5; i) {printf(runing times:%d\r\n, times);times;sleep(1);}
} 4、在开发平台输入命令开启gdbserver等待PC端连接
gdbserver 192.168.31.54:2001 gdbtest
·gdbserver 工具
·192.168.31.54 PC端IP
·2001 端口 随便整一个
·gdbtest 应用程序 如果输入后报错说找不到文件或者报错“During startup program exited with code 127”那就可能是交叉编译器不对编译出来的文件不可执行这是本人遇到的情况。 5、PC端运行gdb工具进行调试运行后就会如下图等待我们输入命令。
./arm-linux-gnueabi-gdb /具体路径/gdbtest 6、连接到开发平台输入命令连接
//连接到开发板上
target remote 192.168.31.28:2001
·192.168.31.28 开发板IP
·2001 端口 看看开发板的情况可以看到已经连接上了接下来就可以进行调试了。 4、开始调试 在调试前先了解一下gdb的命令
命令作用 l列出所有程序源码 b设置断点 c运行到断点处 s单步运行会运行到函数里面 n单步运行不会进函数里 p打印某个变量值 q退出gdb调试界面运行后开发板上的gdbserver也会停止 1列出程序源码 2设置断点到main函数 3运行程序遇到断点会停下可以看到停在了main起始位置 4单步运行进函数内运行四次 5打印变量值可以看到已经1了因为我们运行过一次完整的循环了 6自动执行程序输入命令c可以看到运行结束了同时开发板也会打印出调试信息。 7PC端退出gdb调试