iMX6Q调试篇-Linux程序开发使用gdb调试
平台:OKMX6Q-S2平台 (ARM Cortex-A9 i.MX6Q)
环境: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进行源码级调试
同样代码错误也清楚显示出来
|
|
相关产品 >
-
FETMX6Q-C核心板
i.MX6Q核心板板层出不穷,要如何选择?飞凌解读i.mx6Q芯片强性能为您推荐四核A9架构的i.MX6Q产品精选,包含iMX6Q 核心板、i.MX6Q 核心板、iMX6Q工业级核心板,欢迎采购。 i.MX6Q核心板基于NXP(原Freescale)Cortex-A9架构的i.MX6Q四核处理器设计,核心板小尺寸核心板搭配独特的薄款连接器,让设计随心所欲!
了解详情 -
OKMX6Q-C开发板
双千兆飞凌嵌入式iMX6Q开发板,板对板连接器,纤薄之际,次底板支持iMX6Q和iMX6DL核心板。i.MX6Q开发板与i.MX6DL开发板资源丰富,原理图、PCB、软件资源、硬件资源下载,技术支持等。欢迎选购
了解详情