iMX6Q调试篇-Linux程序开发使用gdb调试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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进行源码级调试

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

以上是关于iMX6Q调试篇-Linux程序开发使用gdb调试的主要内容,如果未能解决你的问题,请参考以下文章

喵呜:Linux环境基础开发工具使用篇之Linux开发工具:Linux调试器-gdb使用

使用GNU/gdb调试Linux C/C++可执行程序查看出错源代码、设置断点

linux 下面怎么用gdb调试多个.c文件?

linux禁止gdb调试

Linux GDB 程序调试工具使用详解

Linux GDB程序调试工具使用简介