Гайзенбаґ (англ. heisenbug) — дотепний жаргонний термін у програмуванні для баґа, що зникає коли хтось намагається дослідити його. Термін є каламбуром від імені Вернера Гайзенберга, фізика, який першим заявив принцип спостерігача в квантовій механіці, який стверджує, що саме спостереження за системою неминуче змінює її стан.
Приклади
Гайзенбаґи стаються через те, що поширені варіанти зневадження програм, такі як вставлення (операцій виведення) або виконання у зневаджувачі, зазвичай змінюють код, змінюють адреси змінних у пам'яті і часовий перебіг виконання.
Один з поширених прикладів гайзенбаґа є баґ, який з'являється у програмі, скомпільованій з оптимізацією, але коли програма скомпільована без оптимізації (як це часто роблять з метою вивчення її з допомогою зневаджувача) — все гаразд. Під час зневадження значення, які за умови оптимізації зберігались би в регістрах процесора, часто виштовхуються в загальну пам'ять. Це може зачепити, наприклад, результат порівнянь чисел з рухомою комою, бо значення в пам'яті можуть мати меншу точність і діапазон, ніж значення в регістрі.
Іншими поширеними причинами гайзенбаґа є використання значення неініціалізованої змінної (яка може змінювати свою адресу та/чи початкове значення під час зневадження) або використання нечинного вказівника (який вказує на іншу адресу ніж за умов зневадження). Зазвичай зневаджувачі також надають можливість використання вартових (англ. watches) або інші користувацькі інтерфейси, які спричиняють появу додаткового сирцевого коду (такого як доступ до членів), який виконується крадькома і також може змінити поточний стан програми.
Фактором гайзенбаґа також може бути час, особливо в багатопотокових програмах. Виконання програми в зневаджувачі може змінити перебіг виконання порівняно з нормальним виконанням. Чутливі до часового перебігу баґи, такі як стан гонитви, можуть не виявляти себе, коли програма уповільнена покроковим виконанням у зневаджувачі. Це відбувається частіше у програмах, що взаємодіють із зовнішньою сутністю, яка непідконтрольна зневаджувачу, наприклад коли йдеться про обробку мережевих пакетів і під контролем зневаджувача лише одна з машин.
Див. також
Примітки
- . Архів оригіналу за 5 вересня 2012. Процитовано 26 вересня 2012.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Gajzenbag angl heisenbug dotepnij zhargonnij termin u programuvanni dlya baga sho znikaye koli htos namagayetsya dosliditi jogo Termin ye kalamburom vid imeni Vernera Gajzenberga fizika yakij pershim zayaviv princip sposterigacha v kvantovij mehanici yakij stverdzhuye sho same sposterezhennya za sistemoyu neminuche zminyuye yiyi stan PrikladiGajzenbagi stayutsya cherez te sho poshireni varianti znevadzhennya program taki yak vstavlennya operacij vivedennya abo vikonannya u znevadzhuvachi zazvichaj zminyuyut kod zminyuyut adresi zminnih u pam yati i chasovij perebig vikonannya Odin z poshirenih prikladiv gajzenbaga ye bag yakij z yavlyayetsya u programi skompilovanij z optimizaciyeyu ale koli programa skompilovana bez optimizaciyi yak ce chasto roblyat z metoyu vivchennya yiyi z dopomogoyu znevadzhuvacha vse garazd Pid chas znevadzhennya znachennya yaki za umovi optimizaciyi zberigalis bi v registrah procesora chasto vishtovhuyutsya v zagalnu pam yat Ce mozhe zachepiti napriklad rezultat porivnyan chisel z ruhomoyu komoyu bo znachennya v pam yati mozhut mati menshu tochnist i diapazon nizh znachennya v registri Inshimi poshirenimi prichinami gajzenbaga ye vikoristannya znachennya neinicializovanoyi zminnoyi yaka mozhe zminyuvati svoyu adresu ta chi pochatkove znachennya pid chas znevadzhennya abo vikoristannya nechinnogo vkazivnika yakij vkazuye na inshu adresu nizh za umov znevadzhennya Zazvichaj znevadzhuvachi takozh nadayut mozhlivist vikoristannya vartovih angl watches abo inshi koristuvacki interfejsi yaki sprichinyayut poyavu dodatkovogo sircevogo kodu takogo yak dostup do chleniv yakij vikonuyetsya kradkoma i takozh mozhe zminiti potochnij stan programi Faktorom gajzenbaga takozh mozhe buti chas osoblivo v bagatopotokovih programah Vikonannya programi v znevadzhuvachi mozhe zminiti perebig vikonannya porivnyano z normalnim vikonannyam Chutlivi do chasovogo perebigu bagi taki yak stan gonitvi mozhut ne viyavlyati sebe koli programa upovilnena pokrokovim vikonannyam u znevadzhuvachi Ce vidbuvayetsya chastishe u programah sho vzayemodiyut iz zovnishnoyu sutnistyu yaka nepidkontrolna znevadzhuvachu napriklad koli jdetsya pro obrobku merezhevih paketiv i pid kontrolem znevadzhuvacha lishe odna z mashin Div takozhKargo kult programuvannyaPrimitki Arhiv originalu za 5 veresnya 2012 Procitovano 26 veresnya 2012