利用Eclipse和Sourcery G++ Lite通过GDBserver在Windows下单步调试嵌入式Linux应用程序
2014-05-23 11:29
537 查看
我的开发平台:
上位机:WIN7 32bit Home basic
下位机:AM3517, Linux 2.6.37
需要用的软件资源:
1. arm-2012.09-64-arm-none-linux-gnueabi.exe (sourcery G++ Lite)
2. jdk-8u5-windows-i586.exe (Java Jdk)
3. eclipse-standard-kepler-SR2-win32.zip(Eclipse)
4. Gdbserver (下位机)
安装sourcery G++ Lite 交叉编译链for windows的安装包
假设安装到C:\ProgramFiles\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_GNU_Linux,
注意PATH一定要选择添加到系统PATH里,如下图
安装JDK
打开Eclipse,Help -> Install New Software,,在列表里,ProgrammingLanguage->C/C++ programming tool
软件安装完毕。
导入你以前的下位机程序,Makefile Project with Existing Code
自动导入工程后,工程目录右键属性,Properties(Alt+enter), 在Build里,选择自定义编译指令,cs-make如图。
Build -> Build Project
把生成的可执行文件(我这里是GCC_test),拷贝到下位机板子上。
在下位机linux上,拷贝gdbserver到/bin/ (GDBserver的移植比较容易,这里就略过了,网友可以自行到网上去找)
GCC_test拷贝到/home/
电脑和下位机都要连接以太网,用于GDB远程调试
假设PC的IP:192.168.100.111
Arm:192.168.100.19
在板子上运行
/home # gdbserver 192.168.100.19:2345 GCC_test
Process GCC_test created; pid = 610
Listening on port 2345
在Eclipse里,Run->Debug Configurations…
双击C/C++ Remote Application,会自动创建一个工程Debug配置,
点击Debug,就能进入调试界面,程序自动停在Main函数入口处
同时,在下位机,
/home# gdbserver 192.168.100.19:2345 GCC_test
Process GCC_test created; pid = 610
Listening on port 2345
Remote debugging from host 192.168.100.111
接下去就可以单步调试,设置断点,查看寄存器,查看变量,控制程序跳转等,非常方便。
此方法关键在于sourcery G++ lite提供了arm-none-linux-gnueabi-gdb.exe,可以直接在windows下调试远程的GDBserver运行的程序,通过Eclipse的调试接口,可以做到在windows下单步调试嵌入式linux的程序,也可以在windows下交叉编译下位机运行的arm linux程序。实在是非常方便的一种手段。
缺点在于,一些shared library没有调试信息,当你在调用库函数时,没法暂停,解决方法是编译带调试信息的shared library,貌似工作量太大,也无必要,目前的这些手段足够我们调试自己的应用程序了。
上位机:WIN7 32bit Home basic
下位机:AM3517, Linux 2.6.37
需要用的软件资源:
1. arm-2012.09-64-arm-none-linux-gnueabi.exe (sourcery G++ Lite)
2. jdk-8u5-windows-i586.exe (Java Jdk)
3. eclipse-standard-kepler-SR2-win32.zip(Eclipse)
4. Gdbserver (下位机)
安装sourcery G++ Lite 交叉编译链for windows的安装包
假设安装到C:\ProgramFiles\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_GNU_Linux,
注意PATH一定要选择添加到系统PATH里,如下图
安装JDK
打开Eclipse,Help -> Install New Software,,在列表里,ProgrammingLanguage->C/C++ programming tool
软件安装完毕。
导入你以前的下位机程序,Makefile Project with Existing Code
自动导入工程后,工程目录右键属性,Properties(Alt+enter), 在Build里,选择自定义编译指令,cs-make如图。
Build -> Build Project
把生成的可执行文件(我这里是GCC_test),拷贝到下位机板子上。
在下位机linux上,拷贝gdbserver到/bin/ (GDBserver的移植比较容易,这里就略过了,网友可以自行到网上去找)
GCC_test拷贝到/home/
电脑和下位机都要连接以太网,用于GDB远程调试
假设PC的IP:192.168.100.111
Arm:192.168.100.19
在板子上运行
/home # gdbserver 192.168.100.19:2345 GCC_test
Process GCC_test created; pid = 610
Listening on port 2345
在Eclipse里,Run->Debug Configurations…
双击C/C++ Remote Application,会自动创建一个工程Debug配置,
点击Debug,就能进入调试界面,程序自动停在Main函数入口处
同时,在下位机,
/home# gdbserver 192.168.100.19:2345 GCC_test
Process GCC_test created; pid = 610
Listening on port 2345
Remote debugging from host 192.168.100.111
接下去就可以单步调试,设置断点,查看寄存器,查看变量,控制程序跳转等,非常方便。
此方法关键在于sourcery G++ lite提供了arm-none-linux-gnueabi-gdb.exe,可以直接在windows下调试远程的GDBserver运行的程序,通过Eclipse的调试接口,可以做到在windows下单步调试嵌入式linux的程序,也可以在windows下交叉编译下位机运行的arm linux程序。实在是非常方便的一种手段。
缺点在于,一些shared library没有调试信息,当你在调用库函数时,没法暂停,解决方法是编译带调试信息的shared library,貌似工作量太大,也无必要,目前的这些手段足够我们调试自己的应用程序了。
相关文章推荐
- eclipse+gdbserver调试嵌入式linux应用程序
- "Windows远程调试Linux上的C++程序:Eclipse+MingW+Samba+GDBserver"-------续文
- Windows远程调试Linux上的C++程序:Eclipse+MingW+Samba+GDBserver
- gdbserver远程调试嵌入式linux应用程序方法
- gdbserver远程调试嵌入式linux应用程序方法
- 转 gdbserver远程调试嵌入式linux应用程序方法
- Eclipse远程开发调试Linux应用程序,Eclipse+cdt+Uniwin+Ubuntu+gcc+gdb,打造超级Linux开发平台
- linux下用eclipse + GDBserver + JLINK 在线调试(ARM11)
- Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件
- 使用gdbserver+arm-linux-gdb 调试应用程序
- 在嵌入式linux下用gdb server和gdb调试
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】gdb+gdbserver的方式进行ARM程序调试
- linux/windows下eclipse+gdb调试ndk程序
- linux下远程调试windows上jlink gdbserver的方法
- 利用eclipse + qemu| Vmware + gdb 调试linux内核
- 嵌入式linux调试:用gdbserver调试共享库
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】gdb+gdbserver的方式进行ARM程序调试
- eclipse 平台gdbserver调试arm-linux程序
- Linux: gdbserver + gdb insight调试应用程序
- Eclipse远程开发调试Linux应用程序,Eclipse+cdt+Uniwin+Ubuntu+gcc+gdb,打造超级Linux开发平台