iMX6Q調(diào)試篇-Linux程序開發(fā)使用gdb調(diào)試

原創(chuàng) 2017-07-21 11:50:00 iMX6Q調(diào)試 Linux程序開發(fā)

平臺:OKMX6Q-S2平臺  (ARM Cortex-A9 i.MX6Q)

環(huán)境: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參數(shù),這樣使用gdb調(diào)試時(shí)才能看到具體是程序的哪一行出了錯誤。

3、將可執(zhí)行文件11拷貝到開發(fā)板,運(yùn)行程序

root@freescale /$ulimit -c unlimited  該命令的作用就是生成core文件,就是程序存在段錯誤時(shí)運(yùn)行產(chǎn)生的文件

root@freescale /$ ./11

Segmentation fault (core dumped)

這時(shí)在根目錄下已經(jīng)產(chǎn)生了core文件

4、將產(chǎn)生的core文件與之前的11文件放在電腦上的同一目錄下,在命令行使用gdb進(jìn)行源碼級調(diào)試

如圖可以看到第5行指針賦值出錯已經(jīng)列出。

 

二、Qt程序

1、Qt程序的調(diào)試過程與命令行大同小異,首先編寫崩潰程序如下

void MainWindow::on_checkBox_toggled(bool)

{

    int *p=NULL;

    *p=1;

}

當(dāng)勾選CheckBox的時(shí)候,程序崩潰

2、修改Qt程序的Makefile,


在圖中位置增添-g參數(shù),再進(jìn)行編譯

2、這里將程序設(shè)置成自啟動,在啟動腳本中也需要加上ulimit -c unlimited命令,


在程序執(zhí)行之前執(zhí)行該命令

3、同樣將core文件與可執(zhí)行文件放在電腦上的同一目錄下,在命令行使用gdb進(jìn)行源碼級調(diào)試


 

同樣代碼錯誤也清楚顯示出來



相關(guān)產(chǎn)品 >

  • FETMX6Q-C核心板

    i.MX6Q核心板板層出不窮,要如何選擇?飛凌解讀i.mx6Q芯片強(qiáng)性能為您推薦四核A9架構(gòu)的i.MX6Q產(chǎn)品精選,包含iMX6Q 核心板、i.MX6Q 核心板、iMX6Q工業(yè)級核心板,歡迎采購。  i.MX6Q核心板基于NXP(原Freescale)Cortex-A9架構(gòu)的i.MX6Q四核處理器設(shè)計(jì),核心板小尺寸核心板搭配獨(dú)特的薄款連接器,讓設(shè)計(jì)隨心所欲!

    了解詳情
    FETMX6Q-C核心板
  • OKMX6Q-C開發(fā)板

    雙千兆飛凌嵌入式iMX6Q開發(fā)板,板對板連接器,纖薄之際,次底板支持iMX6Q和iMX6DL核心板。i.MX6Q開發(fā)板與i.MX6DL開發(fā)板資源豐富,原理圖、PCB、軟件資源、硬件資源下載,技術(shù)支持等。歡迎選購

    了解詳情
    OKMX6Q-C開發(fā)板

推薦閱讀 換一批 換一批