查看: 3689|回复: 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不知道怎么一直不温不火。
    回复 支持 反对

    举报

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

    本版积分规则

    关闭

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

    有奖活动|英飞凌智能座舱直播活动
    3月12日,英飞凌将携手大联大品佳集团,从行业痛点出发,结合最新技术发展,深入解析智能座舱的技术革新与未来趋势,现场还会有嘉宾为您提供一对一答疑服务。无论您是科技爱好者、工程师,还是投资者与行业分析师,这场直播都将为您揭开智能座舱的核心技术密码!

    查看 »



    手机版|小黑屋|与非网

    GMT+8, 2025-4-8 19:42 , Processed in 0.115972 second(s), 19 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.5

    Copyright © 2001-2024, Tencent Cloud.