有一種軟件bug是開發(fā)復(fù)雜軟件項(xiàng)目開發(fā)者的噩夢,那就是代碼中的競態(tài)(Race Condition,也被譯作競爭條件)引發(fā)的軟件bug,近日Facebook開源了開發(fā)工具RacerD,來幫助開發(fā)者檢查并預(yù)防Race Condition bug。
Race Condition是程序在多線程多任務(wù)處理時(shí),對有些共享資源進(jìn)行操作(例如兩個(gè)進(jìn)程同時(shí)修改同一個(gè)數(shù)據(jù)時(shí)),導(dǎo)致整個(gè)處理過程變得混亂甚至鎖死,引發(fā)BUG。
Race Condition查找起來非常困難,開發(fā)者很難徹查一個(gè)app中所有的潛在問題,因?yàn)镽ace Condition引發(fā)的bug并不持續(xù),因此難以診斷。
Facebook科學(xué)家Peter O‘Hearn在接受采訪時(shí)指出,RacerD能查出大多數(shù)race condition導(dǎo)致的bug,雖然不能保證全部。
據(jù)悉,F(xiàn)acebook的Android應(yīng)用開發(fā)團(tuán)隊(duì)在迭代新聞源并發(fā)功能(可將app性能提升5%)時(shí)使用RacerD找到來超過1000個(gè)race condition bug。
目前RacerD兼容Java,下一步Facebook將進(jìn)一步開發(fā)使RacerD能夠兼容C++。