青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術(shù)博客

感興趣領(lǐng)域:高性能服務器編程,存儲,算法,Linux內(nèi)核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數(shù)據(jù)加載中……

[經(jīng)驗教訓總結(jié)]協(xié)議包頭結(jié)構(gòu)體定義不嚴謹造成的錯誤

今天遇到一個問題,調(diào)試了一天.

大致描述一下,移植一個開源項目的代碼,原來在mips平臺上運行正常,后來到arm平臺的機器上運行,結(jié)果運行時出錯了.

一般的,這樣的問題,腦子里面第一下的反應就是由于字節(jié)序問題造成的.

我起初也是這么想的.因為從出錯的現(xiàn)象來看,是某個字段不符合要求造成的出錯.于是沿著這個思路去找BUG.抓包來分析,看上去也是這樣的.但是,追蹤的過程中發(fā)現(xiàn),有多次收發(fā)報文的過程,這個字段,或者說擁有這個字段的結(jié)構(gòu)體在多處都有使用,改了一處,在別的地方其它字段又有報錯.

回頭看代碼,發(fā)現(xiàn)在最開始解析包頭的時候,已經(jīng)造成了緊跟著包頭的某個字段出現(xiàn)異常,于是,想到是不是在不同的平臺上,sizeof(某結(jié)構(gòu)體)的數(shù)值不一樣造成,要驗證這一點,給包頭結(jié)構(gòu)體的定義加上嚴格按照一個字節(jié)對齊的限制,重新運行程序,可以了.

最后再來稍微詳細一些看這個問題,假設(shè)包頭結(jié)構(gòu)體的定義是:
typedef unsigned short u16;

struct header
{
    u16 a;
    u16 b;
    u16 c;
};
如果解析的時候,sizeof(struct header) != sizeof(u16) * 3,那么使用sizeof(struct header)解析接收到緩沖區(qū)的數(shù)據(jù)就會出現(xiàn)問題,因為它會對緊跟著的數(shù)據(jù)也造成影響.程序的異常正是源于此.在代碼的處理中,首先接收包頭,對包頭的數(shù)據(jù)進行了字節(jié)序轉(zhuǎn)換,然后,又對緊挨著包頭的結(jié)構(gòu)體進行了相同的字節(jié)序轉(zhuǎn)換,由于包頭結(jié)構(gòu)體的字節(jié)序轉(zhuǎn)換同時影響了緊挨著的結(jié)構(gòu)體中的數(shù)據(jù),所以這些數(shù)據(jù)實際上被進行了兩次的字節(jié)序轉(zhuǎn)換,這才造成了這個問題"看上去"是字節(jié)序轉(zhuǎn)換不當造成的"表面原因",如果跟著這個原因繼續(xù)跟蹤下去,以這個思路解決問題,治標而不治本.

總結(jié):
1. 收發(fā)數(shù)據(jù)的結(jié)構(gòu)體定義需要嚴謹一些,如果不能確定如何對齊,最好自己定義一個對齊的標準.
2. 經(jīng)驗有的時候也不見得就是好事,有時候會讓自己陷入思維定式的怪圈,比如在這個問題的處理上,由于問題在切換了硬件平臺的時候才出現(xiàn),正好又是兩個字節(jié)序不一樣的硬件平臺,所以經(jīng)驗將我的思路導向了字節(jié)序不正確這個方向上.



posted on 2009-10-15 20:32 那誰 閱讀(5275) 評論(6)  編輯 收藏 引用 所屬分類: 經(jīng)驗教訓

評論

# re: [經(jīng)驗教訓總結(jié)]協(xié)議包頭結(jié)構(gòu)體定義不嚴謹造成的錯誤  回復  更多評論   

有假設(shè)就寫到代碼里嘛。
隨便找個編譯單元:
static char assume[sizeof(header)==sizeof(u16)*3?1:-1];

或者就在header下方寫:
typedef int assume[sizeof(header)==sizeof(u16)*3?1:-1]];

2009-10-15 23:35 | OwnWaterloo

# re: [經(jīng)驗教訓總結(jié)]協(xié)議包頭結(jié)構(gòu)體定義不嚴謹造成的錯誤  回復  更多評論   

按照一字節(jié)對齊,不要使用編譯器默認的。
2009-10-16 09:00 | guest

# re: [經(jīng)驗教訓總結(jié)]協(xié)議包頭結(jié)構(gòu)體定義不嚴謹造成的錯誤[未登錄]  回復  更多評論   

這種時候最好加上一個#pragma pack命令,對應于gcc好像是__attribute吧。
2009-10-16 17:31 | 欲三更

# re: [經(jīng)驗教訓總結(jié)]協(xié)議包頭結(jié)構(gòu)體定義不嚴謹造成的錯誤  回復  更多評論   

學習分享!
2009-10-18 19:59 | 伊莎貝兒女裝

# re: [經(jīng)驗教訓總結(jié)]協(xié)議包頭結(jié)構(gòu)體定義不嚴謹造成的錯誤  回復  更多評論   

建議不要與語言,CPU相關(guān)。否則,你下次,還依然還要被教訓
2009-10-18 21:35 | zdhsoft

# re: [經(jīng)驗教訓總結(jié)]協(xié)議包頭結(jié)構(gòu)體定義不嚴謹造成的錯誤  回復  更多評論   

不太明白,你一個結(jié)構(gòu)中三個成員都是相同類型的,什么情況下會出現(xiàn)整個結(jié)構(gòu)的大小不等于成員類型大小的3倍?
2009-11-18 19:44 | MaTox
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            av成人老司机| 亚洲免费精品| 欧美电影美腿模特1979在线看 | 亚洲性视频网址| 亚洲欧洲日本专区| 亚洲精品中文字幕在线| 亚洲精一区二区三区| 一区二区三区欧美亚洲| 亚洲一级二级| 欧美一区在线直播| 免费不卡亚洲欧美| 国产精品永久免费在线| 久久亚洲高清| 欧美日一区二区三区在线观看国产免| 欧美三区视频| 狠狠色狠狠色综合日日tαg| 亚洲电影视频在线| 亚洲午夜精品福利| 久久婷婷国产综合精品青草| 欧美二区在线播放| 99热这里只有成人精品国产| 欧美在线亚洲在线| 欧美日韩mv| 狠狠色狠狠色综合日日五| 日韩一区二区高清| 久久久久成人精品| 日韩视频一区二区| 久久精品国产99国产精品| 欧美精品一区二区三区视频| 国产精品午夜电影| 日韩写真视频在线观看| 午夜伦理片一区| 亚洲黄色尤物视频| 一区二区三区视频在线播放| 欧美一区中文字幕| 欧美视频在线播放| 亚洲三级视频| 久久综合图片| 欧美中文字幕精品| 国产精品视频一区二区高潮| 亚洲国产清纯| 久久人人爽爽爽人久久久| 9久re热视频在线精品| 久久视频一区二区| 国产一区二区三区四区在线观看| 一区二区精品在线观看| 嫩草影视亚洲| 久久久久久亚洲精品不卡4k岛国| 国产精品午夜在线| 亚洲欧美国产日韩天堂区| 亚洲人成在线免费观看| 麻豆精品精华液| 一区二区在线观看视频| 欧美一区二区三区免费看| 亚洲久久一区| 欧美日韩国产二区| 99精品欧美一区二区蜜桃免费| 欧美大片在线观看一区二区| 久久精品一区四区| 一区二区视频免费完整版观看| 久久精品国产精品亚洲| 亚洲欧美在线aaa| 国产欧美日韩综合一区在线播放| 香蕉久久夜色精品国产| 亚洲一区欧美一区| 国产欧美婷婷中文| 久久久久久综合| 久久亚洲综合色| 91久久精品久久国产性色也91| 一区二区三区高清不卡| 欧美中文在线免费| 一区在线电影| 欧美成人午夜免费视在线看片| 久久青青草综合| 91久久精品一区二区三区| 欧美韩国日本一区| 欧美日韩国产首页| 亚洲综合999| 欧美主播一区二区三区| 在线观看视频免费一区二区三区| 欧美顶级艳妇交换群宴| 欧美韩国在线| 亚洲欧美在线免费观看| 欧美一区二区成人| 91久久综合亚洲鲁鲁五月天| 亚洲免费播放| 国产综合视频| 亚洲激情视频网| 国产精品日韩欧美综合| 噜噜噜久久亚洲精品国产品小说| 免费短视频成人日韩| 亚洲午夜激情网站| 久久久91精品| 亚洲永久网站| 免费日韩成人| 久久精品国产96久久久香蕉| 欧美国产第一页| 久久国产精品毛片| 免费精品99久久国产综合精品| 一本一本久久a久久精品综合麻豆| 亚洲一区二区在线免费观看视频 | 欧美日韩一区在线观看| 欧美在线一级视频| 欧美精品日韩| 麻豆精品传媒视频| 国产精品麻豆成人av电影艾秋| 毛片基地黄久久久久久天堂| 欧美视频在线视频| 亚洲国产精品尤物yw在线观看| 国产区二精品视| 亚洲国产电影| 激情成人综合网| 亚洲一区二区在线免费观看视频| 亚洲精品午夜精品| 久久久蜜臀国产一区二区| 性欧美1819性猛交| 欧美午夜精品久久久久久人妖 | 黄色成人av网站| 亚洲视频精选在线| 日韩图片一区| 老牛嫩草一区二区三区日本| 欧美在线一二三区| 国产精品一卡二卡| 亚洲无人区一区| 亚洲视频在线一区| 欧美精品v日韩精品v国产精品| 另类天堂av| 尤物九九久久国产精品的特点| 欧美一区二区视频免费观看| 午夜一区二区三区在线观看| 欧美精品v日韩精品v国产精品| 欧美成人亚洲成人| 美女精品在线观看| 国产在线精品一区二区中文 | 久久天天综合| 国产午夜精品理论片a级大结局| 亚洲色诱最新| 欧美一区二视频在线免费观看| 欧美日韩在线高清| 在线性视频日韩欧美| 亚洲综合色丁香婷婷六月图片| 欧美视频在线观看免费| 亚洲性图久久| 久久精品日产第一区二区| 国产乱码精品一区二区三区五月婷 | 国产精品视频网站| 亚洲欧美日韩综合aⅴ视频| 欧美夜福利tv在线| 国产一区二区三区四区在线观看| 久久大香伊蕉在人线观看热2| 久久一区二区三区国产精品| 韩日欧美一区二区三区| 另类综合日韩欧美亚洲| 亚洲韩国一区二区三区| 亚洲无线观看| 国产一区二区在线观看免费播放| 久久不见久久见免费视频1| 蜜乳av另类精品一区二区| 亚洲高清在线播放| 欧美日韩国产美| 亚洲欧美国产三级| 美女国内精品自产拍在线播放| 亚洲欧洲日本在线| 国产精品久久久| 久久久精品tv| 9色精品在线| 麻豆精品国产91久久久久久| 亚洲麻豆av| 国产午夜精品全部视频播放| 久久这里有精品视频| 99国产精品| 免费日韩av片| 午夜精品久久久| 91久久久亚洲精品| 国产精品有限公司| 欧美激情第六页| 欧美一级在线播放| 亚洲免费观看在线视频| 久久午夜国产精品| 亚洲伊人观看| 亚洲区中文字幕| 国产午夜精品久久久| 欧美日韩国产精品一卡| 久久精品二区三区| 国产精品99久久久久久久久久久久| 蜜臀久久99精品久久久画质超高清| 99视频一区二区| 尤物九九久久国产精品的特点| 国产精品成人一区| 欧美国产成人精品| 久久综合狠狠综合久久激情| 亚洲一级免费视频| 亚洲精品小视频在线观看| 美女网站在线免费欧美精品| 亚洲欧美综合一区| 亚洲午夜未删减在线观看| 美腿丝袜亚洲色图| 欧美激情精品久久久久久大尺度| 欧美亚洲综合在线| 亚洲欧美另类久久久精品2019|