分享

基于Qt Creator和gdb的远程调试

 guitarhua 2012-11-02

基于Qt Creator和gdb的远程调试

描述:我的开发板照片
图片:

    环境:虚拟机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”,暂时没有影响我的调试工作,暂不予追究,那位高手知道的话请给予指导。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多