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、軟件資源、硬件資源下載,技術支持等。歡迎選購
了解詳情