中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中bug的解決方法

發布時間:2021-10-22 11:08:55 來源:億速云 閱讀:382 作者:柒染 欄目:互聯網科技

Linux中bug的解決方法,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

最近調試過程中遇到了一個問題,現象是在沒有GPS信號的情況下,程序每次跑幾分鐘后就會出現以下錯誤提示信息,導致程序中斷退出:

double free or corruption (out)

Aborted (core dumped)
此問題折騰了我大概兩小時,在此做個總結。
剛開始我檢查代碼,是否有double free 的地方,發現并沒有。后來,我在代碼里加了malloc是否成功的判斷以及free后指針賦NULL的語句,依然是同樣的問題。
再后來我把log打開看,看的過程中突然發現一個現象,就是每次程序掛掉時,串口讀到的數據長度都是450字節,再仔細看,其實是讀了兩串數據,即兩條GNRMC及其他語句。
buff len:450;$GNRMC,,V,,,,,,,,,,N*4D
$GNVTG,,,,,,,,,N*2E
$GNGGA,,,,,,0,00,99.99,,,,,,*56
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GPGSV,1,1,00*79
$GLGSV,1,1,00*65
$GNGLL,,,,,,V,N*7A
$GNRMC,,V,,,,,,,,,,N*4D
$GNVTG,,,,,,,,,N*2E
$GNGGA,,,,,,0,00,99.99,,,,,,*56
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GPGSV,1,1,00*79
$GLGSV,1,1,00*65
$GNGLL,,,,,,V,N*7A
double free or corruption (out)

Aborted (core dumped)

正常情況下,讀到都是如下信息,即只有一條GNRMC語句。

buff len:225;$GNRMC,,V,,,,,,,,,,N*4D
$GNVTG,,,,,,,,,N*2E
$GNGGA,,,,,,0,00,99.99,,,,,,*56
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GPGSV,1,1,00*79
$GLGSV,1,1,00*65

$GNGLL,,,,,,V,N*7A

有了這個線索就好找問題了,  問題出在下面這個函數malloc分配空間時那個多加的數字100上,

int gps_analyse(char *buff,int buff_len,GNSS *gps_data)

{

    ……

    char *tmpbuf;

    tmpbuf = (char *)malloc(strlen(ptr)+100);

    memset(tmpbuf, 0, strlen(ptr)+100);

    memcpy(tmpbuf, ptr, strlen(ptr));

    while (strstr(tmpbuf, ",,"))

        strrpl(tmpbuf, ",,", ",@,");

   ……

這個100本意是用來將,,替換成,@,時用的,對于上面那種特殊狀態,總共有114個連續,,,所以空間分配不足,導致出現問題。
解決方法也很簡單,只要把100加大些就可以。  這個問題,帶給我以下幾點啟發:
1)malloc分配空間時大小一定要注意
2)測試時要覆蓋各種可能的情況,不能只考慮正常狀態,之前我就只測了有GPS信號時的狀態;

3)測試時時間要足夠長。

關于Linux中bug的解決方法問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

托里县| 益阳市| 南阳市| 五家渠市| 禄丰县| 涟源市| 上饶市| 广昌县| 博客| 万年县| 伊通| 东台市| 汝城县| 临泽县| 丹东市| 扬州市| 辉南县| 泗洪县| 洮南市| 高陵县| 洛扎县| 民乐县| 资中县| 龙川县| 团风县| 兴仁县| 资阳市| 石城县| 乌审旗| 阿勒泰市| 合江县| 旺苍县| 新绛县| 安宁市| 阳西县| 庆元县| 清水县| 讷河市| 乐至县| 华亭县| 乌拉特后旗|