查看: 164|回复: 0

iMX6Q调试篇-Linux程序开发使用gdb调试

[复制链接]

主题

好友

1374

积分

进士

  • TA的每日心情

    2014-4-10 13:56
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-8-1 08:40:13 |显示全部楼层
    平台:OKMX6Q-S2平台
    环境:Linux
    一、cmd程序
    1、编写一个简单地崩溃程序dest.c,如下:
    #include "stdio.h"
    int main()
    {
    int *p=NULL;
    *p=1;  //给指针赋值
      return 1;
    }
    2、编译
    arm-fsl-linux-gnueabi-gcc -g -o 11 dest.c
    注意:一定要在命令中加上-g参数,这样使用gdb调试时才能看到具体是程序的哪一行出了错误。
    3、将可执行文件11拷贝到开发板,运行程序
    root@freescale /$ulimit -c unlimited 该命令的作用就是生成core文件,就是程序存在段错误时运行产生的文件
    root@freescale /$ ./11
    Segmentation fault (core dumped)
    这时在根目录下已经产生了core文件
    4、将产生的core文件与之前的11文件放在电脑上的同一目录下,在命令行使用gdb进行源码级调试

    如图可以看到第5行指针赋值出错已经列出。
    二、Qt程序
    1、Qt程序的调试过程与命令行大同小异,首先编写崩溃程序如下
    void MainWindow::on_checkBox_toggled(bool)
    {
      int *p=NULL;
      *p=1;
    }
    当勾选CheckBox的时候,程序崩溃
    2、修改Qt程序的Makefile,

    在图中位置增添-g参数,再进行编译
    2、这里将程序设置成自启动,在启动脚本中也需要加上ulimit -c unlimited命令,

    在程序执行之前执行该命令
    3、同样将core文件与可执行文件放在电脑上的同一目录下,在命令行使用gdb进行源码级调试

    同样代码错误也清楚显示出来
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /2 下一条

    手机版|电路城

    GMT+8, 2019-8-24 13:43 , Processed in 0.149779 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部