0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)WinCE平臺下通過系統(tǒng)異常信息定位程序bug位置

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-17 11:14 ? 次閱讀

在程序開發(fā)時(shí),時(shí)常會(huì)遇到異常報(bào)錯(cuò)的情況。有時(shí)因?yàn)榄h(huán)境因素,通過調(diào)試工具很難在調(diào)試時(shí)復(fù)現(xiàn)故障情況,或者很難在短時(shí)間內(nèi)復(fù)現(xiàn)故障情況。隨著工程代碼量的增加,定位程序出錯(cuò)位置變得更加困難。

在使用基于WINCE平臺的英創(chuàng)系列工控主板進(jìn)行應(yīng)用程序開發(fā)時(shí),當(dāng)程序產(chǎn)生異常退出,CE操作系統(tǒng)將通過調(diào)試串口打印類似如下錯(cuò)誤信息。根據(jù)這些信息,結(jié)合應(yīng)用程序?qū)?yīng)的map文件,就能夠快速定位程序異常的位置,本文將詳細(xì)介紹這一方法。

準(zhǔn)備工作

以一個(gè)簡單的控制臺程序test_exception.exe為例,模擬會(huì)產(chǎn)生異常的程序,代碼如下。

#include 'stdafx.h'
#include 'windows.h'
#include 'commctrl.h'

void testErr(char* pbuf, int len)
{
*(pbuf+len) = len;
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
int i;
char* p = 0;
char buf[10];
for (i=0; i< 10;i++)
{
printf('i=%d\n',i);
testErr(buf, i);
Sleep(1000);
}
printf('test err\n');
Sleep(1000);
testErr(p, 10);
for (;;)
{
printf('.');
Sleep(1000);
}
return 0;
}

這段代碼有個(gè)非常明顯的致命錯(cuò)誤,char* p = 0;實(shí)際上是定義的是p的地址為0,之后testErr(p, 10);函數(shù)對p地址的操作會(huì)造成指針越界,程序?qū)a(chǎn)生異常結(jié)束。

設(shè)置工程屬性

首先需要設(shè)置工程屬性,讓工程編譯時(shí)產(chǎn)生MAP文件。

另外還可以選擇添加匯編輸出信息。

這樣我們在重新編譯程序后,就可以在編譯目錄里找到源文件的.map和.cod兩種調(diào)試輔助文件。

記錄DEBUG信息

連接英創(chuàng)主板的調(diào)試串口至PC主機(jī)的串口,打開串口工具(英創(chuàng)主板默認(rèn)的調(diào)試串口參數(shù)為115200,8-N-1),以監(jiān)聽DEBUG口打印信息。

運(yùn)行test_exception程序,記錄DEBUG口打印的異常信息。

主要記錄出錯(cuò)的exe(或者dll)名test_exception.exe,PC地址00011024,和RA地址000110bc。

查看map文件

查找PC地址00011024,和RA地址000110bc附近的信息。

對照PC地址能夠知道,testErr函數(shù)的地址00011000,這個(gè)函數(shù)地址偏移00011024-00011000的地方出錯(cuò)了。

對照RA地址能夠知道,最后一次調(diào)用該函數(shù)未出錯(cuò)時(shí)的位置,在wmain函數(shù)地址偏移000110bc -00011034的地方。

這樣,我們不但知道了是哪個(gè)函數(shù)出的錯(cuò),也知道了在哪里調(diào)用出的錯(cuò)。

查看cod文件

為了進(jìn)一步確定范圍,打開編譯目錄下對應(yīng)的cod文件test_exception.cod。

查看testErr函數(shù)信息,可以知道,在偏移地址00011024-00011000=00024的地方的匯編,以及出錯(cuò)的C代碼,為test_exception.cpp第10行的*(pbuf+len) = len;

查看wmain函數(shù)信息,可以知道,返回地址000110bc -00011034=00088,最后一次正常調(diào)用testErr的地方是在test_exception.cpp第22行。

定位錯(cuò)誤

這樣稍加分析,我們就可以確定出錯(cuò)位置了。

最后,可以在代碼附近添加打印或日志log記錄,來驗(yàn)證異常位置判斷是否正確。

需要例程可以聯(lián)系英創(chuàng)工程師。

如果產(chǎn)生異常提示信息的不是用戶程序,而是'coredll.dll',則判定為是驅(qū)動(dòng)出錯(cuò),請聯(lián)系英創(chuàng)工程師檢查出錯(cuò)原因。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    3

    文章

    3511

    瀏覽量

    88245
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6083

    瀏覽量

    35121
收藏 人收藏

    評論

    相關(guān)推薦

    信息集成系統(tǒng):打造智慧化的數(shù)字化平臺

    。 ? 什么是信息集成系統(tǒng)?它是一種集成多個(gè)軟硬件系統(tǒng)的綜合平臺,旨在提高企業(yè)的管理效率和業(yè)務(wù)能力。通過將不同
    的頭像 發(fā)表于 09-10 16:47 ?195次閱讀

    梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應(yīng)用創(chuàng)新發(fā)展大會(huì)暨解決方案應(yīng)用推廣大會(huì)。會(huì)上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?335次閱讀

    人員定位系統(tǒng)的原理和工作流程

    。 人員定位系統(tǒng)是一種利用先進(jìn)的技術(shù)手段來實(shí)現(xiàn)對人員位置信息追蹤的系統(tǒng)。其原理是通過給每個(gè)人員佩
    的頭像 發(fā)表于 09-03 10:42 ?264次閱讀
    人員<b class='flag-5'>定位</b><b class='flag-5'>系統(tǒng)</b>的原理和工作流程

    ESP32 崩潰后調(diào)試信息定位到源碼方法

    arduino 通過調(diào)試信息定位出錯(cuò)源碼
    的頭像 發(fā)表于 08-27 14:29 ?477次閱讀

    智慧工廠藍(lán)牙人員定位系統(tǒng)功能

    可實(shí)時(shí)掌握全廠人員位置、作業(yè)等信息,通過智能分析和電子圍欄等技術(shù)有效預(yù)防安全風(fēng)險(xiǎn),同時(shí)還可聯(lián)動(dòng)視頻監(jiān)控查看現(xiàn)場實(shí)際情況,提升安全管理效率。 智慧工廠藍(lán)牙人員
    的頭像 發(fā)表于 07-30 16:17 ?228次閱讀
    智慧工廠藍(lán)牙人員<b class='flag-5'>定位</b><b class='flag-5'>系統(tǒng)</b>功能

    油庫人員定位系統(tǒng)解決方案,融合藍(lán)牙、GPS 北斗RTK定位技術(shù)

    油庫人員定位方案背景 隨著物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等信息技術(shù)的發(fā)展,傳統(tǒng)油庫已經(jīng)逐漸向智慧油庫轉(zhuǎn)變,由于傳統(tǒng)的油庫管理模式已經(jīng)落伍,無法滿足國家提出的“安全生產(chǎn)”要求,因此需要通過信息技術(shù)
    的頭像 發(fā)表于 07-25 17:07 ?344次閱讀
    油庫人員<b class='flag-5'>定位</b><b class='flag-5'>系統(tǒng)</b>解決方案,融合藍(lán)牙、GPS 北斗RTK<b class='flag-5'>定位</b><b class='flag-5'>技術(shù)</b>

    UWB人員定位系統(tǒng)定位原理

    uwb人員定位系統(tǒng)基于什么原理? UWB人員定位系統(tǒng)基于超寬帶(Ultra WideBand)技術(shù)進(jìn)行
    的頭像 發(fā)表于 06-18 11:37 ?1010次閱讀
    UWB人員<b class='flag-5'>定位</b><b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>定位</b>原理

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-位置服務(wù)獲取設(shè)備信息開發(fā)

    ,如車載、步行導(dǎo)航。 . 在此場景下,為保證系統(tǒng)提供位置結(jié)果精度最優(yōu),主要使用GNSS定位技術(shù)提供定位服務(wù),結(jié)合場景特點(diǎn),在導(dǎo)航啟動(dòng)之初,用
    發(fā)表于 06-14 14:46

    翼輝信息入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    近日,2023 年(第五屆)信息技術(shù)應(yīng)用創(chuàng)新解決方案公布遴選名單,歷經(jīng)資格初審、技術(shù)中評、區(qū)域評議、終評預(yù)審,翼輝以“面向工業(yè)領(lǐng)域嵌入式操作系統(tǒng) SylixOS 解決方案”,成功在全國優(yōu)秀方案中脫穎而出,入選典型解決方案名單。
    的頭像 發(fā)表于 04-28 11:37 ?479次閱讀
    翼輝<b class='flag-5'>信息</b>入選2023年<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新解決方案名單

    基于物聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算等現(xiàn)代信息技術(shù)高速公路智慧消防平臺解決方案

    安科瑞 程瑜 系統(tǒng)簡介 1、概述 智慧消防云平臺基于物聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算等現(xiàn)代信息技術(shù),將分散的火災(zāi)自動(dòng)報(bào)警設(shè)備、電氣火災(zāi)監(jiān)控設(shè)備、智慧煙感探測器、智慧消防用水等設(shè)備連接形成網(wǎng)絡(luò),并對這些設(shè)備
    的頭像 發(fā)表于 03-15 14:20 ?380次閱讀
    基于物聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算等現(xiàn)代<b class='flag-5'>信息技術(shù)</b>高速公路智慧消防<b class='flag-5'>平臺</b>解決方案

    龍芯中科三項(xiàng)信創(chuàng)方案入圍工信部2023年信息技術(shù)應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    近日,工業(yè)和信息化部通報(bào)了2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案征集遴選結(jié)果,本次共評選出典型解決方案173個(gè)、應(yīng)用示范案例83個(gè)、單項(xiàng)創(chuàng)新案例64個(gè)。
    的頭像 發(fā)表于 03-07 16:45 ?776次閱讀
    龍芯中科三項(xiàng)信<b class='flag-5'>創(chuàng)</b>方案入圍工信部2023年<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    手機(jī)定位技術(shù)之衛(wèi)星定位和移動(dòng)基站定位

    GPS 是一種通過衛(wèi)星信號來確定接收設(shè)備位置定位技術(shù)。手機(jī)內(nèi)置的 GPS 芯片可以接收來自衛(wèi)星的信號,通過計(jì)算接收時(shí)間和衛(wèi)星
    的頭像 發(fā)表于 02-26 15:19 ?4467次閱讀
    手機(jī)<b class='flag-5'>定位</b><b class='flag-5'>技術(shù)</b>之衛(wèi)星<b class='flag-5'>定位</b>和移動(dòng)基站<b class='flag-5'>定位</b>

    RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù)

    電子發(fā)燒友網(wǎng)站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003示例<b class='flag-5'>程序</b>固件<b class='flag-5'>信息技術(shù)</b>

    嵌入式開發(fā)為什么需要輸出調(diào)試信息?

    作用: 1.錯(cuò)誤排查與問題定位 輸出調(diào)試信息可以幫助你在代碼中發(fā)現(xiàn)和定位錯(cuò)誤。當(dāng)程序出現(xiàn)異常行為或崩潰時(shí),
    發(fā)表于 11-28 16:46

    闡述量子信息技術(shù)的研究現(xiàn)狀與未來

    20世紀(jì) 80 年代, 科學(xué)家將量子力學(xué)應(yīng)用到信息領(lǐng)域, 從而誕生了量子信息技術(shù), 諸如量子計(jì)算機(jī)、量子密碼、量子傳感等. 這些技術(shù)的運(yùn)行規(guī)律遵從量子力學(xué), 因此不僅其原理是量子力學(xué), 器件本身也
    發(fā)表于 11-22 11:40 ?742次閱讀
    闡述量子<b class='flag-5'>信息技術(shù)</b>的研究現(xiàn)狀與未來