精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

AddressSanitizer/UBSan 實戰:一次數組越界是怎么被揪出來的

開發 前端
Sanitizer 系列工具相當于給 C++ 項目加了一層“安全網”,很多模糊的未定義行為在它面前無處遁形。 如果你在寫 C++,真的值得把它們融入日常的開發和測試流程中。

在 C++ 項目里,最讓人頭疼的一類問題就是內存相關的 bug。它們可能在測試階段沒暴露,一旦跑到線上,往往直接表現為崩潰或者莫名其妙的邏輯錯誤。更麻煩的是,有些錯誤代碼甚至能“正常運行”,但行為已經是未定義的了。

好在現代編譯器提供了一些強大的工具,比如 AddressSanitizer (ASan) 和 UndefinedBehaviorSanitizer (UBSan),用來幫助我們捕捉這些隱蔽的錯誤。下面我結合一個簡單的例子,看看它們是如何把 bug 揪出來的。

一個看似無害的 bug

假設我們有這樣一段代碼:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> data(5, 0);
    for (int i = 0; i <= 5; ++i) {
        data[i] = i;
    }
    std::cout << "done" << std::endl;
}

直覺上,這個程序在循環時訪問了 data[5],顯然越界了。但問題在于,很多時候它不會直接崩潰,而是“安靜地”寫到了不屬于這個 vector 的內存。結果取決于運行環境,有時候你完全察覺不到。

這種 bug 在真實項目里就很危險,因為它可能破壞別的數據,直到很久以后才爆出來。

用 AddressSanitizer 抓出來

要啟用 ASan,只需要在編譯時加上參數:

g++ -fsanitize=address -g main.cpp -o main

運行之后輸出大概是這樣的:

=================================================================
==12345==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000000014
WRITE of size 4 at 0x602000000014 thread T0
    #0 0x400b1d in main /home/user/main.cpp:7
    ...
0x602000000014 is located 0 bytes to the right of 20-byte region
[0x602000000000,0x602000000014)
allocated by thread T0 here:
    #0 0x7f2bda35 in operator new(unsigned long)
    #1 0x4009f3 in std::vector<int>...

可以看到,ASan 明確指出了“heap-buffer-overflow”,并且準確定位到越界發生的代碼行。甚至還提示了這個越界的寫操作剛好落在 std::vector 分配的 20 字節(5 個 int)的后面。

這類信息比傳統的 segfault 崩潰棧要詳細得多,非常適合排查這種內存越界的問題。

UBSan:另一類隱蔽錯誤

UBSan 關注的是 未定義行為,比如除以零、無效類型轉換、越界訪問等。它不會像 ASan 那樣攔截所有內存錯誤,但對于一些邏輯層面的未定義行為特別有用。

比如這段代碼:

#include <iostream>

int main() {
    int x = -1;
    unsigned int y = 1;
    if (x < y) {
        std::cout << "x < y" << std::endl;
    }
}

這里 x < y 的比較,其實是 有符號數和無符號數混合比較,C++ 標準規定會把 x 轉換為無符號類型,結果是個很大的數,條件判斷就變得出乎意料。

用 UBSan 編譯運行:

g++ -fsanitize=undefined -g main.cpp -o main

程序會提示:

runtime error: signed integer overflow: -1 < 1 cannot be represented in type 'unsigned int'

這就直觀地暴露了一個“潛在坑點”,讓我們能在開發階段及時修正。

兩者結合的效果

實際開發中,ASan 和 UBSan 可以一起使用:

g++ -fsanitize=address,undefined -g main.cpp -o main

這樣既能捕捉內存越界等底層問題,也能發現一些未定義行為帶來的邏輯錯誤。

不過要注意的是,開啟 sanitizer 會增加運行時開銷(內存占用和性能),所以它更適合在開發和測試階段啟用,而不是在生產環境中常駐。

我自己在實際項目中的應用體會

結合自己的使用經驗,總結幾點:

  1. 盡早在開發階段開啟越早發現 bug,越容易修復。把 ASan/UBSan 打開做單元測試,往往能捕捉到很多肉眼看不到的邊界問題。
  2. 與 CI 流程集成在 CI 構建里加上 sanitizer 選項,可以保證每次提交都經過檢查。很多開源項目(比如 LLVM 自身)就長期啟用了 ASan。
  3. 不要依賴運氣內存 bug 有時候“運行得很正常”,但這并不代表沒問題。Sanitizer 給了我們一種系統化的方法來發現它們,而不是靠偶爾觸發的 crash。
  4. 知道它的局限ASan 并不能檢測所有的內存問題,比如內存泄漏(那要用 LeakSanitizer),或者多線程競爭(那要用 ThreadSanitizer)。但在大多數 C++ 項目里,它已經能解決很大一部分常見 bug。

我的感受是:Sanitizer 系列工具相當于給 C++ 項目加了一層“安全網”,很多模糊的未定義行為在它面前無處遁形。 如果你在寫 C++,真的值得把它們融入日常的開發和測試流程中。

責任編輯:武曉燕 來源: 程序廚
相關推薦

2009-04-07 09:27:20

Wi-Fi故障無線網絡

2023-05-18 14:05:24

AI檢測

2010-04-01 22:16:21

2023-05-22 09:42:12

AI檢測

2024-07-10 08:22:42

2021-11-11 16:14:04

Kubernetes

2020-12-29 10:25:07

漏洞JSONP注入

2014-08-01 14:06:45

2021-01-22 05:35:19

Lvm模塊Multipath

2011-08-08 13:31:44

數據分析數據倉庫

2011-06-28 10:41:50

DBA

2020-04-08 10:30:19

Linux 攻擊 安全

2013-09-13 09:27:42

服務器LinuxApache

2021-02-24 15:05:32

C語言數組代碼

2021-10-14 10:53:20

數據庫查詢超時

2020-10-24 13:50:59

Python編程語言

2021-12-27 10:08:16

Python編程語言

2019-09-14 21:39:28

iPhone 11蘋果新iPhone

2019-05-28 11:49:09

2017-10-18 09:06:41

點贊
收藏

51CTO技術棧公眾號

538国产精品一区二区在线| 在线播放欧美女士性生活| 免费一区二区三区在在线视频| 国产午夜精品久久久久| 欧美国产美女| 欧美一区二区观看视频| 日韩伦理在线免费观看| 国产黄在线播放| 韩国av一区二区三区四区| 久久久久亚洲精品| 摸摸摸bbb毛毛毛片| 国产成年精品| 色欧美日韩亚洲| 超级碰在线观看| 狠狠狠综合7777久夜色撩人| 国产精品77777| 国产98色在线| 国产一级中文字幕| 色小子综合网| 精品视频在线导航| 手机看片国产精品| 欧洲成人一区| 亚洲福利国产精品| 亚洲自拍偷拍一区二区三区| 欧美性孕妇孕交| 国产 日韩 欧美大片| 成人av.网址在线网站| 一级成人黄色片| 亚洲高清不卡| 久久精品国产91精品亚洲| 精品人妻一区二区三区香蕉 | 日韩精品视频网| 日韩精品免费电影| 成人做爰69片免费| 国产精品igao视频网网址不卡日韩| 日本道色综合久久| 日韩精品视频久久| 91超碰在线播放| 亚洲精品美腿丝袜| 日本一区二区免费高清视频| 成人在线观看一区| 久久久亚洲精品一区二区三区| 亚洲精品欧美极品| 国产精品一二三四五区| 毛片一区二区三区| 国产精品视频网| 尤物视频免费观看| 日韩影院在线观看| 国产成一区二区| 久久精品99北条麻妃| 美女日韩在线中文字幕| 26uuu亚洲伊人春色| 日本学生初尝黑人巨免费视频| 女生裸体视频一区二区三区| 欧美成人午夜剧场免费观看| 亚洲最大的黄色网址| 99久久激情| 久久九九国产精品怡红院| 欧美另类videoxo高潮| 午夜精品一区二区三区国产| 精品国产一区二区三区久久久狼 | 奇米影视四色在线| 色婷婷成人网| 欧美一区二区三区四区高清| 亚洲一区二区图片| 99国产精品免费网站| 亚洲国产精品va在线观看黑人| 女同性恋一区二区三区| 婷婷精品视频| 国产一区二区三区在线| 日本视频在线免费| 亚洲先锋影音| 国语自产精品视频在线看| 日韩美女视频网站| 久久精品盗摄| 国产一区二区香蕉| 亚洲国产一二三区| 97精品电影院| 亚洲精品tv久久久久久久久| 精品国产99久久久久久| 亚洲免费av高清| 国产极品尤物在线| 裤袜国产欧美精品一区| 欧美日本在线一区| 无码人妻久久一区二区三区蜜桃| 日韩av字幕| 国产亚洲一区二区在线| 538精品在线观看| 国产精品久久777777毛茸茸| 国产精品高潮粉嫩av| 97免费观看视频| 99久久er热在这里只有精品15| 日韩欧美视频一区二区| 人交獸av完整版在线观看| 精品国产91久久久| 欧美女同在线观看| 欧美电影在线观看完整版| 色七七影院综合| 国产成人愉拍精品久久| 久久电影国产免费久久电影| 高清视频在线观看一区| 国产在线观看免费网站| 亚洲一区中文在线| 国产一区二区黑人欧美xxxx| 国产成人av免费观看| 亚洲免费观看高清完整版在线观| 日韩最新免费不卡| 国产一级大片在线观看| 日韩av一二三| 国产一区二区三区四区hd| 国产精品四虎| 无吗不卡中文字幕| 91热视频在线观看| 丝袜连裤袜欧美激情日韩| 欧美成人小视频| 一级特黄免费视频| av在线播放不卡| 激情视频小说图片| 福利一区视频| 日韩精品免费在线视频观看| 欧美成人一区二区三区高清| 青青草国产精品97视觉盛宴| 九九九热999| 亚洲91av| 欧美精品aⅴ在线视频| av男人的天堂av| 国产精品三上| 国产精品国产精品| 在线电影福利片| 9191久久久久久久久久久| 色综合99久久久无码国产精品| 亚洲一卡久久| 国产一区二区三区四区hd| 特级毛片在线| 欧美一级一级性生活免费录像| 国产三级在线观看完整版| 天堂在线亚洲视频| 欧美精品人人做人人爱视频| 午夜欧美激情| 日韩av在线导航| 国产一级淫片a| 成人综合婷婷国产精品久久| www成人免费| 亚洲精品国产九九九| 欧美人在线视频| a天堂中文在线观看| 中文字幕一区免费在线观看| 亚洲欧美自偷自拍另类| 成人看的羞羞网站| 国产精品青草久久久久福利99| 国产尤物视频在线| 色视频成人在线观看免| 欧美另类z0zx974| 日韩成人精品在线观看| 人偷久久久久久久偷女厕| 欧洲av一区二区| 中文字幕日韩电影| 国产精品一区二区黑人巨大| 亚洲精品乱码久久久久| 日本一区二区免费视频| 在线日本高清免费不卡| 激情久久av| 久久野战av| 色综合亚洲精品激情狠狠| 一级做a爰片久久毛片16| 成人欧美一区二区三区小说| 中文字幕日韩久久| 国产精品99免费看| 精品一区二区三区自拍图片区| 久久人体大尺度| 日韩一区二区三区xxxx| 精品国精品国产自在久不卡| 五月激情六月综合| 亚洲无人区码一码二码三码的含义| 美国毛片一区二区| 91.com在线| 国产99久久精品一区二区300| 国产精品美女主播在线观看纯欲| a√在线中文网新版址在线| 欧美一区中文字幕| 日本少妇裸体做爰| 国产精品免费人成网站| 日本r级电影在线观看| 亚洲人成在线影院| 亚洲 国产 日韩 综合一区| 精品视频在线观看网站| 91a在线视频| 日本不卡视频| 欧美精品一区二区在线观看| 91免费精品国偷自产在线| 欧洲综合视频| 欧美一区二区视频在线观看2020| 天天操天天射天天爽| 亚洲国产精品精华液2区45| 性色av浪潮av| 日韩中文字幕亚洲一区二区va在线 | 日韩中文字幕亚洲| 日韩中文字幕免费观看| 欧美三级日韩三级国产三级| 欧美极品aaaaabbbbb| 国产亚洲一区二区在线观看| 337p日本欧洲亚洲大胆张筱雨| 亚洲在线免费| www插插插无码免费视频网站| 最新亚洲精品| 国产成人精品一区二区三区福利 | 日本理论中文字幕| 成人av在线一区二区| 欧美午夜aaaaaa免费视频| 亚洲激情另类| 一区二区三区日韩视频| 一区二区美女| 国产日韩精品久久| 老司机亚洲精品一区二区| 国产精品国产三级国产aⅴ浪潮| 污的网站在线观看| 日韩中文字幕免费看| 头脑特工队2免费完整版在线观看| 51精品秘密在线观看| 奴色虐av一区二区三区| 欧美日韩国产精品一区二区不卡中文 | 国产精品网在线观看| 成人有码在线视频| 国产精品第一| 国产精品高潮呻吟久久av野狼| 在线天堂资源www在线污| 欧美激情国产高清| av免费网站在线| 日韩中文字幕第一页| 99riav在线| 国产亚洲福利一区| 欧美挠脚心网站| 亚洲精品suv精品一区二区| www.桃色av嫩草.com| 日韩一区二区在线免费观看| 一级片一区二区三区| 欧美午夜不卡在线观看免费| 欧美a视频在线观看| 狠狠躁夜夜躁人人爽超碰91| 日本少妇激情舌吻| 婷婷中文字幕一区三区| 亚洲精品在线观看av| 亚洲一区视频在线| 麻豆chinese极品少妇| 一区二区三区不卡在线观看| 朝桐光av在线| 一区二区三区欧美视频| 欧美交换国产一区内射| 亚洲精品你懂的| 天堂а√在线中文在线鲁大师| 国产精品嫩草久久久久| 免费一级suv好看的国产网站 | 日韩精品视频免费| 天天综合在线视频| 亚洲精品一区二区网址| 黄色片免费在线| 中文字幕欧美在线| caopo在线| 久久久久久网址| 美女91在线看| 国产精品18久久久久久首页狼| 先锋欧美三级| 91久久久久久久| 波多野结衣一区二区三区免费视频| 国产欧美在线一区二区| 伊人久久大香线蕉综合网站| 日日夜夜精品网站| 91精品国产成人观看| 精品丰满人妻无套内射| 国产美女精品| 日韩中文字幕a| 国产乱对白刺激视频不卡| jjzz黄色片| 久久久综合视频| 又色又爽的视频| 一区二区三区欧美视频| 精品成人av一区二区在线播放| 日本久久电影网| 国产一区二区波多野结衣| 日韩欧美国产精品一区| 日韩精品福利| 久久久极品av| 忘忧草在线影院两性视频| 国产乱人伦真实精品视频| 欧美经典一区| 日本不卡一区二区三区在线观看| 99精品电影| a在线视频观看| 蜜乳av一区二区三区| 亚洲少妇中文字幕| 亚洲国产成人私人影院tom| 欧美精品xxxxx| 日本国产一区二区| 超碰免费在线97| 一道本无吗dⅴd在线播放一区| 中文字幕中文字幕在线中高清免费版| 国产91精品视频在线观看| 日本在线一区二区| 精品高清视频| 亚洲一区二区| 精品免费国产一区二区| 国产大片一区二区| 亚洲欧美日韩久久久久久| 婷婷av一区二区三区| 久久精品中文字幕| 久久久人成影片一区二区三区在哪下载 | 国产成人啪午夜精品网站男同| 国产人妻大战黑人20p| 一个色综合网站| 91 中文字幕| 亚洲美女视频网站| 91九色在线看| 亚洲一区二区三区xxx视频| 国产欧美日韩精品一区二区三区 | 亚洲欧洲精品在线| 久久国产成人| 中文字幕三级电影| 亚洲天堂网中文字| 最近中文字幕免费在线观看| 日韩av在线网| 国产精品一品| 国产99视频精品免费视频36| 999久久久91| 成人性生生活性生交12| 91香蕉视频在线| 国产精品500部| 精品美女在线播放| a级网站在线播放| 国产又爽又黄的激情精品视频| 国内精品久久久久久久久电影网 | 老女人性淫交视频| 欧美日本在线播放| 不卡在线视频| 国产精品r级在线| 国产一区二区精品福利地址| 免费无码av片在线观看| av高清久久久| 成年人午夜视频| 亚洲精品国产欧美| 日本在线影院| 快播亚洲色图| 性久久久久久| 偷拍夫妻性生活| 日本韩国欧美在线| 久草福利在线| 国产精品高潮在线| 日韩大片在线| 黄色小视频免费网站| 综合av第一页| 精品久久久久成人码免费动漫| 美女少妇精品视频| 亚洲一区网址| 久激情内射婷内射蜜桃| 91视视频在线观看入口直接观看www| 五月天婷婷丁香| 日韩电影第一页| 一级毛片久久久| 亚洲成人午夜在线| 久久99国产乱子伦精品免费| 东方av正在进入| 精品久久国产字幕高潮| 国产一二在线播放| 欧美日本韩国国产| 日韩成人一级片| 四虎免费在线视频| 精品国产乱码久久久久久图片 | 色综合久久影院| 国产狼人综合免费视频| 伊人青青综合网| 午夜免费福利影院| 一本高清dvd不卡在线观看| 波多野结衣在线网站| 51国偷自产一区二区三区的来源 | 91国产美女在线观看| 国产成人1区| www.亚洲自拍| 欧美日韩激情视频| 午夜看片在线免费| 国产精品美女黄网| 日韩精品一区第一页| 天天综合天天做| 国产视频综合在线| 日本午夜免费一区二区| 野外做受又硬又粗又大视频√| 久久蜜桃一区二区| 99久久久久久久| 欧美一级在线播放| 久久精品青草| theav精尽人亡av| 日韩一区二区三区免费看 | 美女国产一区| 丝袜 亚洲 另类 欧美 重口 | 扒开jk护士狂揉免费| 欧美日韩国产a| 嗯啊主人调教在线播放视频| 亚洲一区精彩视频| 99r精品视频| 国产夫妻自拍av| 国产精品久久久av| 亚洲人成在线影院|