查看: 173|回复: 1

[Linux技术] iMX6Q调试篇-Linux程序开发使用gdb调试

[复制链接]

140

主题

11

好友

1358

积分

版主

Rank: 7Rank: 7Rank: 7

  • TA的每日心情

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

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-7-29 18:04:54 |显示全部楼层

    平台: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:n_checkBox_toggled(bool)

    {

        int *p=NULL;

        *p=1;

    }

    当勾选CheckBox的时候,程序崩溃

    2、修改Qt程序的Makefile,

    在图中位置增添-g参数,再进行编译

    2、这里将程序设置成自启动,在启动脚本中也需要加上ulimit -c unlimited命令,

    在程序执行之前执行该命令

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

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


    ------------------------------------------------ 产品信息 ------------------------------------------------



    查看四核 FETMX6Q-S 核心板





    查看 OKMX6DL-S2 开发板



    回复

    使用道具 举报

    8

    主题

    0

    好友

    2079

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 17:46
  • 签到天数: 412 天

    连续签到: 4 天

    [LV.9]以坛为家II

    发表于 2017-7-31 08:07:39 |显示全部楼层
    Linux不知道怎么一直不温不火。
    回复

    使用道具 举报

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

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-8-24 14:44 , Processed in 0.111525 second(s), 9 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部