环境:虚拟机Fedora12同《Fedora12下搭建Qt Creator的arm开发环境 并 移植Qt4.6.2到Micro2440》
软件准备:
参照《Fedora12下搭建Qt Creator的arm开发环境 并 移植Qt4.6.2到Micro2440》移植Qt4.6.3,Qt Creator升级为2.0.1,其他一切不变。
网上下载gdb-7.0.tar.gz,google一下,忘了在哪下的了。
*环境的搭建与《Fedora12下搭建Qt Creator的arm开发环境 并 移植Qt4.6.2到Micro2440》文章同,这里不再阐述,对软件路径不清楚的请参照上面这篇文章……
1、将下载的gdb-7.0.tar.gz减压到一个目录下,如/root/tmp/gdb-7.0
打开终端命令行,进入/root/tmp/gdb-7.0目录,执行命令
#./configure --target=arm-linux --prefix=/usr/local/gdb-arm –v
#make
#make install
我在这里没有遇到错误,编译完毕gdb会被安装到/usr/local/gdb-arm。
2、编译gdbserver(参照/root/tmp/gdb-7.0/gdb/gdbserver目录下README文件)
进入/root/tmp/gdb-7.0/gdb/gdbserver目录
#cd /root/tmp/gdb-7.0/gdb/gdbserver
执行下面命令
#export PATH=$PATH:/usr/local/gdb-arm
#export CC=/opt/toolchains/arm920t-eabi/bin/arm-linux-gcc
#./configure --target=arm-linux --host=arm-linux
#make CC=/opt/toolchains/arm920t-eabi/bin/arm-linux-gcc
编译完毕将目录下的gdbserver可执行文件复制到/root/tmp/rootfs_qtopia_qt4/bin目录下,即我们的NFS启动根目录下。放在bin文件夹下是方便我们直接在终端下执行gdbserver命令。
3、调试
我们已textedit这个demos为例,如果你不知道如何使用Qt Creator编译程序,请参照上面的那片文章。
这里我将textedit这个demos复制到了/root/tmp/rootfs_qtopia_qt4/home/plg目录下。
使用Qt Creator打开工程(双击textedit.pro即可)。
3.1、配置工程
点击左侧边栏按钮Projects(即那个文件夹图标的按钮)在Build Settings配置界面下
设置Edit build configuration为Qt4.6.3-arm Debug,及编译环境为Qt4.6.3的arm环境的Debug模式下。
设置Build directory为/root/tmp/rootfs_qtopia_qt4/home/plg/textedit,即将textedit后面的那一长串东东(-build-desktop)删除,其他不变。
切回Edit(点击那个Edit按钮),Build工程,视情况Rebuild工程。如配置无误,编译过程很顺利。我在此未碰到问题。
3.2、启动调试
编译完成,通过NFS启动系统。(这里我的虚拟机ip为192.168.1.1,开发板ip为192.168.1.70)
3.2.1、Minicom下进入/home/plg/textedit目录,执行命令
#gdbserver 192.168.1.1:2345 textedit -qws &
注:这里的“&”符号可以避免程序独占终端而无法执行其他命令,如果程序僵死,我们也可以使用ps和kill命令杀死。“192.168.1.1:2345”为虚拟机的ip地址和用于远程调试的端口号,这个端口号应设置为未被占用的,不然会出错。“-qws”意思textedit以GuiServer的模式启动,如果有其他Qt4.6.3的程序启动,这个参数就不需要了(也可以QApplication app(argc, argv,QApplication::GuiServer);设置程序以GuiServer启动,这样就不需要-qws参数了),自己试一下就明白了,关于这个问题google吧!
程序正确启动会在minicom中显示
Process textedit created; pid = 750
Listening on port 2345
字面意思很好理解的。
3.2.2、切换Qt Creator为Debug模式,点击工具栏Debug—〉Start Debugging—〉Start and Attach to Remote Application…命令代开Start Debugger窗口
单击Browse…按钮设置Debugger为“/usr/local/gdb-arm/bin/arm-linux-gdb”,即我们前面编辑gdb(arm-linux-gdb)的安装路径;
单击Browse…按钮设置Local executable为“/root/tmp/rootfs_qtopia_qt4/home/plg/textedit/textedit”,即我们编译好的textedit例子的可执行文件;
在Host and port中键入“192.168.1.70:2345”,即我们的开发板ip地址和端口号;
选择Architecture为“i386”。
OK!单击OK按钮开始调试(别忘了提前设置好断点),配置无误至此应该一切顺利……
看看minicom应该有一些反馈信息,我的是“gdbserver: error initializing thread_db library: version mismatch between libthread_db and libpthread”,暂时没有影响我的调试工作,暂不予追究,那位高手知道的话请给予指导