查看: 2714|回复: 1

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

[复制链接]
  • 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 开发板



    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-3-13 10:11
  • 签到天数: 1088 天

    连续签到: 2 天

    [LV.10]以坛为家III

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

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则



    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 07:08 , Processed in 0.122926 second(s), 17 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.