精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品久久国产97色综合| 日韩毛片一二三区| 欧洲成人免费aa| 99久久99久久精品免费看小说.| 成人mm视频在线观看| 亚洲视频一区在线观看| 成人欧美一区二区三区视频xxx| 国产午夜在线播放| 999精品色在线播放| 日韩精品资源二区在线| 欧美三级午夜理伦三级| 国产日产一区二区| 99久久免费视频.com| 亚洲不卡视频| 国产精品高潮久久久久无| 成人欧美一区二区三区视频 | 欧美日韩伦理| 亚洲精品一区二区三区四区高清| 天天色综合天天色| 午夜欧美激情| 亚洲精品视频在线观看网站| 鲁鲁视频www一区二区| 国产精品一区二区三区在线免费观看| 亚洲日本视频| 九九热视频这里只有精品| 在线小视频你懂的| 日本国产精品| 亚洲精品在线观看视频| 欧美日韩理论片| 亚洲www啪成人一区二区| 亚洲va韩国va欧美va| avove在线观看| 日本在线视频站| 久久久亚洲国产美女国产盗摄| 动漫一区二区在线| 亚洲中文一区二区三区| 日韩国产欧美在线观看| 国产91|九色| 男女啊啊啊视频| 激情综合中文娱乐网| 久久精品国产96久久久香蕉| 四虎国产成人精品免费一女五男| 曰本一区二区三区视频| 亚洲精品成人av| 无码任你躁久久久久久老妇| 免费欧美网站| 日韩欧美综合在线| 亚洲黄色片免费| 久久91超碰青草在哪里看| 91国偷自产一区二区三区成为亚洲经典| 天堂8在线天堂资源bt| 超碰在线网址| 一个色在线综合| av 日韩 人妻 黑人 综合 无码| 二区三区在线观看| 久久国际精品| 国产欧美日韩综合精品一区二区| 麻豆成人在线播放| 日本1级在线| 久久精品夜色噜噜亚洲aⅴ| 欧美12av| 超碰国产在线| 国产精品久久夜| 波多野结衣三级在线| 免费高清完整在线观看| 亚洲乱码中文字幕| 又大又硬又爽免费视频| 国产传媒在线观看| 色婷婷综合久久久久中文| 激情网站五月天| 国产第一亚洲| 日韩一区二区精品葵司在线| 男女性杂交内射妇女bbwxz| 成人免费在线电影网| 亚洲精品www久久久| 日本少妇高潮喷水xxxxxxx| 日韩久久精品| 欧美精品免费在线| 国内免费精品视频| 日韩不卡一区二区三区| 91久热免费在线视频| www.污视频| 久久午夜老司机| 亚洲人一区二区| 在线观看wwwxxxx| 精品久久久一区二区| 亚洲精品视频导航| 一区二区日韩| 国产午夜一区二区| www欧美com| 久久精品中文| 国产免费观看久久黄| 成人黄色免费视频| 久久久久久免费毛片精品| 一区二区三区四区不卡| 美女尤物在线视频| 欧美三级视频在线| 性色av蜜臀av浪潮av老女人| 精品久久电影| 欧美激情网友自拍| 亚洲午夜在线播放| 成人激情小说乱人伦| 亚洲成人18| 日韩精品一区不卡| 成人av福利| 国产精品短视频| 亚洲精品蜜桃久久久久久| 午夜精品久久久久久久久久蜜桃| 在线综合亚洲欧美在线视频 | 91最新地址在线播放| 亚洲欧美日韩不卡一区二区三区| 国产www视频在线观看| 欧美性受xxxx黑人xyx| 亚洲精品第二页| 97视频热人人精品免费| 日本三级韩国三级久久| 国产1区在线观看| 亚洲色大成网站www久久九九| 美女日批免费视频| 午夜视频在线观看精品中文| 伊人伊人伊人久久| 天码人妻一区二区三区在线看| 国内精品伊人久久久久av一坑| 久久综合中文色婷婷| 在线观看男女av免费网址| 欧美色综合影院| 国产精品无码久久久久一区二区| 亚洲私人影院| 91香蕉视频在线下载| 91精品大全| 91黄色免费看| 亚洲av无码一区二区二三区| 黄色国产精品| 999久久久| caopon在线免费视频| 欧美理论片在线| 国产精品视频在| 日韩国产精品大片| 欧美日韩三区四区| 51精品视频| 亚洲第一福利网站| 久久久久久久福利| 成人一区二区三区在线观看| 久久香蕉视频网站| 在这里有精品| 欧美激情videos| 亚洲国产精品久久久久爰性色 | 妺妺窝人体色www在线下载| 国产一区二三区| 综合色婷婷一区二区亚洲欧美国产| 欧洲成人一区| 中文字幕av日韩| 在线观看免费观看在线| 精品一级视频| 东方欧美亚洲色图在线| 午夜精品一区二区三区在线观看| 成人影院大全| 在线播放亚洲激情| 一区二区三区黄| 亚洲欧美福利一区二区| 国产男女无遮挡猛进猛出| 欧美成人69| 国产一区二区三区色淫影院| 蜜桃视频www网站在线观看| 亚洲欧美日本另类| 怡红院男人的天堂| 最新成人av在线| 国产人妖在线观看| 亚洲人妖在线| 日韩免费中文专区| 日本成人一区二区| 欧美日本中文字幕| 天天爱天天干天天操| 色综合网站在线| 日韩欧美视频免费观看| 国产毛片一区二区| 国产精品网站免费| 精品国产欧美日韩| 亚洲在线免费观看| 性欧美18~19sex高清播放| 中文字幕亚洲第一| 亚洲黄色在线播放| 色菇凉天天综合网| 成人免费视频网站入口::| 99免费精品在线观看| 老熟妇仑乱视频一区二区| 国产精品久久久久久| 国产精品美女黄网| 欧美亚洲韩国| 久热在线中文字幕色999舞| 手机av在线免费观看| 欧美三级中文字| 激情综合网五月婷婷| 日本一区二区三区四区| 美女日批在线观看| 日韩不卡手机在线v区| 国产成人免费高清视频| 久久av影视| 99在线视频免费观看| 高清电影一区| 欧美激情伊人电影 | 91美女在线观看| 免费黄频在线观看| 免费视频一区| 成年在线观看视频| 久久蜜桃av| 欧美极品色图| 在线精品视频一区| 久久久久久久久久美女| 欧洲精品一区二区三区久久| 欧美独立站高清久久| 久久天堂国产精品| 涩爱av色老久久精品偷偷鲁| 国产精品国产福利国产秒拍| heyzo一区| 久久亚洲私人国产精品va| 九色在线播放| 亚洲国产天堂久久国产91 | 欧美刺激脚交jootjob| 亚洲一区二区天堂| 色94色欧美sute亚洲13| 日韩免费在线视频观看| 一区二区免费在线播放| 日本黄色录像视频| 国产嫩草影院久久久久| theav精尽人亡av| 不卡的av在线| 岛国精品一区二区三区| 精品亚洲成a人| 天天色综合社区| 日韩电影在线一区二区三区| 波多野结衣50连登视频| 黄色亚洲在线| 日b视频免费观看| 中文字幕亚洲精品乱码| 在线观看免费黄色片| 久久国产精品亚洲人一区二区三区| 久久亚洲午夜电影| 啪啪国产精品| 精品视频在线观看| 欧美日韩大片免费观看| 九九久久99| 日韩在线黄色| 欧美日韩精品不卡| 国产精品三级| 色一情一乱一伦一区二区三区丨| 精品视频国产| 先锋影音一区二区三区| 久久福利影院| 熟女视频一区二区三区| 欧美日韩国产探花| av久久久久久| 国产在线成人| 久久久久久久久久久99| 亚洲免费影视| 国产v亚洲v天堂无码久久久| 日韩avvvv在线播放| 亚洲人辣妹窥探嘘嘘| 麻豆高清免费国产一区| 日韩va在线观看| 国产一区二区三区四区五区入口| 永久免费黄色片| 成人性色生活片免费看爆迷你毛片| 亚洲成人精品在线播放| 不卡视频免费播放| 欧美多人猛交狂配| 中文字幕久久午夜不卡| www色aa色aawww| 亚洲综合一区二区三区| 亚洲美女福利视频网站| 亚洲经典一区二区| 亚洲成人三级在线| 久久精品蜜桃| 久久九九全国免费精品观看| 在线观看a级片| 欧美在线播放视频| 成人在线黄色| 亚洲自拍av在线| 欧美自拍视频| 永久域名在线精品| 国内视频精品| 欧美激情国产精品日韩| 麻豆精品新av中文字幕| 日韩成人av影院| 久久日一线二线三线suv| 亚洲欧洲综合网| 午夜a成v人精品| 中文字幕在线观看国产| 日韩一区二区麻豆国产| 黄色片免费在线| 欧美另类极品videosbest最新版本| 美女露胸视频在线观看| 国产综合在线观看视频| 免费看久久久| av动漫免费观看| 国产亚洲亚洲| 91性高潮久久久久久久| 91美女蜜桃在线| 91杏吧porn蝌蚪| 色综合天天综合在线视频| www久久久com| 亚洲天堂av网| 女人天堂av在线播放| 国产精品2018| 日本在线中文字幕一区| 永久免费在线看片视频| 久久av最新网址| 粗大的内捧猛烈进出视频| 欧美国产日韩一二三区| 国产一级在线观看视频| 在线不卡一区二区| 国产福利在线| 2019中文在线观看| 婷婷视频一区二区三区| 亚洲国产欧美一区二区三区不卡| 亚洲啪啪91| 在线观看视频你懂得| 国产欧美日韩视频一区二区 | 色婷婷av一区| 色丁香婷婷综合久久| 欧美激情第一页xxx| 91麻豆精品国产综合久久久 | 精品日本一区二区| 欧美日韩18| 色偷偷中文字幕| 国产精品福利av| 中文字幕在线观看1| 亚洲系列中文字幕| 丝袜美腿一区| 欧美精品v日韩精品v国产精品| 亚洲黄色av| 国产性猛交96| 亚洲国产日韩a在线播放| 亚洲av无码一区二区三区dv| 久久综合伊人77777尤物| 欧美视频免费看| 新呦u视频一区二区| 日韩国产一区二| 性欧美精品男男| 欧洲一区在线电影| 撸视在线观看免费视频| 久久精品www人人爽人人| 成人三级视频| 无码无遮挡又大又爽又黄的视频| 玖玖精品一区| 亚洲福利视频网| 黄视频在线观看网站| 国产日韩av高清| 99欧美视频| 网站在线你懂的| 亚洲女同一区二区| 精品国产亚洲av麻豆| 久久99久国产精品黄毛片入口| 精品国产欧美| 成人一级生活片| 成人h动漫精品一区二| 久久久久久久黄色片| 国产午夜精品久久久| 欧美一区国产| 亚欧洲精品在线视频免费观看| 免费视频最近日韩| 国产传媒免费在线观看| 欧美一区二区三区不卡| xxx性欧美| 欧美大香线蕉线伊人久久| 日韩高清在线一区| 刘亦菲国产毛片bd| 日韩一区二区三| 9999精品成人免费毛片在线看| 激情久久av| 久久久久国产精品一区二区| 日韩影视一区二区三区| 欧美人成免费网站| 青草在线视频| 欧美日韩在线观看一区| 久久99精品久久久久久国产越南| 欧美精品乱码视频一二专区| 日韩av在线精品| 国产91在线播放精品| 日韩一区二区高清视频| av亚洲产国偷v产偷v自拍| 真实新婚偷拍xxxxx| 久久久91精品国产| 欧美色图婷婷| jizz大全欧美jizzcom| 亚洲亚洲精品在线观看| 日本一区高清| 亚洲a在线播放| 母乳一区在线观看| 小泽玛利亚一区| 日韩电影免费观看在线观看| 成人av色网站| 青青草视频在线免费播放| 中文字幕成人在线观看| 午夜精品小视频| 国产精品久久久久久久久粉嫩av| 午夜亚洲福利| jizz18女人高潮| 亚洲国产日韩欧美在线99| 五月天色综合|