91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

吴堡县| 锦屏县| 深泽县| 正安县| 景东| 循化| 南宁市| 阿拉善盟| 乡宁县| 乐都县| 新泰市| 收藏| 铜山县| 泾阳县| 五台县| 江西省| 信宜市| 崇文区| 阿坝| 清河县| 三河市| 溧水县| 灵宝市| 婺源县| 樟树市| 岳西县| 宁波市| 宝坻区| 射洪县| 平原县| 永年县| 华蓥市| 望奎县| 加查县| 长汀县| 阿勒泰市| 遂宁市| 化德县| 永昌县| 英德市| 平和县|