iMX6Q调试篇-Linux程序开发使用gdb调试
平台: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 /$ ./11Segmentation fault (core dumped)这时在根目录下已经产生了core文件4、将产生的core文件与之前的11文件放在电脑上的同一目录下,在命令行使用gdb进行源码级调试http://www.forlinx.com/UploadFiles/2017072111476265028.jpg如图可以看到第5行指针赋值出错已经列出。 二、Qt程序1、Qt程序的调试过程与命令行大同小异,首先编写崩溃程序如下void MainWindow::on_checkBox_toggled(bool){ int *p=NULL; *p=1;}当勾选CheckBox的时候,程序崩溃2、修改Qt程序的Makefile,http://www.forlinx.com/UploadFiles/2017072111481562330.jpg在图中位置增添-g参数,再进行编译2、这里将程序设置成自启动,在启动脚本中也需要加上ulimit -c unlimited命令,http://www.forlinx.com/UploadFiles/2017072111486404417.jpg在程序执行之前执行该命令3、同样将core文件与可执行文件放在电脑上的同一目录下,在命令行使用gdb进行源码级调试http://www.forlinx.com/UploadFiles/2017072111484671323.jpg 同样代码错误也清楚显示出来------------------------------------------------ 产品信息 ------------------------------------------------
http://www.forlinx.com/UploadFiles/47535729.png
查看四核 FETMX6Q-S 核心板
http://www.forlinx.com/UploadFiles/48510885.png
查看 OKMX6DL-S2 开发板
Linux不知道怎么一直不温不火。
页:
[1]