Википедия

Программная ошибка

Програ́ммная оши́бка (арго баг от англ. bug — «букашка», любое мелкое членистоногое, в узком смысле «клоп») — ошибка в программе или в системе, приводящая к неожиданному поведению программы и, как следствие, выдаче некорректного результата. Большинство программных ошибок возникают из-за ошибок, допущенных разработчиками программы в её исходном коде, либо в её дизайне. Также некоторые ошибки возникают из-за некорректной работы инструментов разработчика, например из-за компилятора, вырабатывающего некорректный код.

Термин «программная ошибка» обычно употребляется для обозначения ошибок, проявляющих себя на стадии работы программы, в отличие, например, от ошибок проектирования или синтаксических ошибок. Отчет, содержащий информацию об ошибке также называют отчетом о проблеме (англ. error report). Отчет о критической проблеме (англ. crash), вызывающей аварийное завершение программы, называют (англ. crash report).

Программные ошибки локализуются и устраняются в процессе тестирования и отладки программы.

Этимология термина «баг»

image
Запись в тех.журнале

В значении «неуловимой технической ошибки» слово «жучок» (англ. bug) употреблялось задолго до появления компьютеров персоналом телеграфных и телефонных компаний в отношении неполадок с электрооборудованием и радиотехникой. В 1878 году Томас Эдисон писал:

«Так было со всеми моими изобретениями. Первый шаг — интуиция, которая приходит как вспышка, затем возникают трудности — устройство отказывается работать, и именно тогда проявляются „жучки“ — как называют эти мелкие ошибки и трудности — и требуются месяцы пристального наблюдения, исследований и усилий, прежде чем дело дойдёт до коммерческого успеха или неудачи».


Во время Второй мировой войны словом bugs именовали проблемы с радарной электроникой.

По одной из версий, в отношении программной ошибки этот термин впервые был применен 9 сентября 1947 годаГрейс Хоппер, которая работала в Гарвардском университете с вычислительной машиной [англ.]. Проследив возникшую ошибку в работе программы до электромеханического реле машины, она нашла между замкнувшими контактами сгоревшего мотылька. Извлечённое насекомое было вклеено скотчем в технический дневник с сопроводительной иронической надписью: «Первый реальный случай обнаружения жучка» (англ. First actual case of bug being found).

Значение и классификация ошибок программного обеспечения

В зависимости от этапа разработки ПО, на котором выявляется ошибка, выделяют:

  • синтаксические ошибки (распознаваемые в качестве таковых транслятором и делающие компиляцию невозможной) — например отсутствие или несоответствие открывающей и закрывающей скобок;
  • предупреждения (warnings) компилятора — например, использование неинициализированной переменной. В этом случае компилятор может заметить, что программист делает что-то необычное (вероятно неверное), и сообщает об этом, однако программист сам принимает решение, игнорировать сообщение или нет;
  • ошибки времени исполнения, смысловые ошибки (семантические) — например вычитание переменных вместо сложения или ошибка сегментации.

По важности:

  • Блокирующие (blockers) — делающие выполнение программы невозможным;
  • Критические (иногда showstoppers) — лишающие программу всей полезности;
  • Серьёзные;
  • Незначительные;
  • Косметические.

По времени появления:

  • Постоянно, при каждом запуске;
  • Иногда («плавающий» тип);
  • Только на машине у клиента (зависит от локальных настроек у клиента).

По месту и направлению:

  • Ошибки пользовательского интерфейса;
  • Системы обработки ошибок;
  • Ошибки, связанные с граничными условиями (например, некорректная обработка пустой строки или максимального числового значения);
  • Ошибки вычислений;
  • Ошибки управления потоками;
  • Ошибки обработки или интерпретации данных;
  • При состоянии гонки;
  • Повышение нагрузки;
  • Ошибки контроля версии и идентификаторов;
  • Ошибки тестирования.

В зависимости от характера ошибки, программы и среды исполнения, ошибка может проявляться сразу или наоборот — долгое время оставаться незамеченной (например Проблема 2038 года).

Также ошибка может проявляться в виде уязвимости, делающей возможным несанкционированный доступ к системе или DoS-атаку.

Разновидности

Гейзенбаг (англ. heisenbug) — программная ошибка, которая исчезает или меняет свои свойства при попытке её обнаружения.

Борбаг (англ. Bohr bug) — ошибка, которая, в противоположность гейзенбагу, не исчезает и не меняет своих свойств при попытке её обнаружения, аналогично стабильности модели электронных орбиталей Нильса Бора. Близкий по значению русскоязычный аналог — «стабильный» или «устойчивый» баг, «систематическая ошибка».

Мандельбаг (англ. mandel bug) — ошибка, чьё поведение столь сложно, что выглядит хаотичным. Название происходит от имени Бенуа Мандельброта, основоположника фрактальной геометрии. Однако, стоит заметить (по принципу, сходному с тестом Тьюринга), что, если не существует способа разделить ошибку, чьё поведение кажется хаотичным, и ошибку, чьё поведение действительно хаотично, то нет никакого смысла различать мандельбаг и гейзенбаг. Некоторые используют термин мандельбаг для описания ошибки, чьё поведение не кажется действительно хаотичным, но столь сложно, что для её исправления требуется переписать программу с нуля. Примером такой ошибки может служить фундаментальная ошибка, допущенная при проектировании системы.

Шрёдинбаг (англ. schroedin bug — в честь мысленного эксперимента с котом Шрёдингера) — ошибка, которая никак не проявляет себя, однако внезапно возникает, если кто-то наткнётся на неё в исходном коде или попытается использовать программу в необычных условиях и осозна́ет, что система вообще не могла работать при наличии такой ошибки. После этого программа перестаёт работать вообще до тех пор, пока ошибка не будет исправлена. Хотя это звучит невероятно, некоторые программы содержат в себе такие ошибки.

Гинденбаг (англ. hinden bug — по названию катастрофы дирижабля «Гинденбург») — ошибка с катастрофическими последствиями, например, полным уничтожением данных.

Багсон Хиггса (англ. higgs-bugson — в честь частицы под названием бозон Хиггса) — ошибка, существование которой предсказано (чаще всего, по косвенным данным или единичным сообщениям пользователей), но которую крайне трудно, если вообще возможно, воспроизвести искусственно в условиях разработки или тестирования. Термин также может употребляться по отношению к ошибке, которая очевидна в коде (математически доказана), но при этом ни разу не наблюдалась в реальных условиях.

Поиск и исправление ошибок

Для отладки программы (англ. debugging) разработчиками ПО используются специальные программы-отладчики (англ. debugger). Например, в операционной системе Windows можно использовать программу WinDbg из пакета . Для GNU/Linux и ряда других UNIX-подобных операционных систем существует отладчик GDB (GNU Debugger).

Отчёты об ошибках

Основная масса ошибок обычно отлаживается на этапе компиляции и тестирования программы. Однако некоторая часть ошибок всё же попадает в публикуемую версию и проявляется на компьютерах конечных пользователей в процессе эксплуатации ПО. Для повышения качества программного обеспечения пользуются специальными программами, цель которых — отловить ошибку в целевом приложении, собрать необходимую информацию о её симптомах и отправить отчёт по интернету к разработчикам данного ПО.

Например, в операционную систему Windows встроена утилита Dr. Watson, которая по умолчанию отлавливает ошибки в приложениях пользователя и отправляет отчёт на специальный Сервер компании Microsoft. Также в качестве примера можно привести аналогичные библиотеки Breakpad и .

Последствия

  • Авария ракеты-носителя «Ариан-5» (4 июня 1996) — пример одной из самых дорогостоящих компьютерных ошибок в истории.
  • Ошибки в программном обеспечении медицинского ускорителя Therac-25 привели к превышению доз облучения нескольких людей.
  • Финансовая организация [англ.] потеряла 440 миллионов долларов за 45 минут из-за ошибки в программе высокочастотного трейдинга.

См. также

Примечания

  1. Источник: Edison to Puskas, 13 ноября 1878, Edison papers, Edison National Laboratory, U.S. National Park Service, West Orange, N.J., цитируется по книге Томаса П. Хьюджеса (Thomas P. Hughes), American Genesis: A History of the American Genius for Invention, Penguin Books, 1989, стр.
  2. Log Book With Computer Bug (англ.). National Museum of American History. Дата обращения: 26 июля 2019. Архивировано 1 июня 2019 года.
  3. Danis, Sharron Ann: "Rear Admiral Grace Murray Hopper". ei.cs.vt.edu (16 февраля 1997). Дата обращения: 20 января 2015. Архивировано 15 июня 2010 года.
  4. Bruce Lindsay. A Conversation with Bruce Lindsay (англ.) // ACM Queue : журнал. — 2004. — Ноябрь (no. 8). Архивировано 4 февраля 2022 года.
  5. The jargon file. Bohr-bug Архивная копия от 12 января 2013 на Wayback Machine (англ.)
  6. The new hacker’s dictionary Архивная копия от 8 сентября 2013 на Wayback Machine (англ.).
  7. M. Grottke and K. S. Trivedi, Software faults, software aging and software rejuvenation. Journal of the reliability engineering association of Japan, выпуск 27, номер 7, 2005 год, страницы 425—438.
  8. Michael Grottke, Kishor S. Trivedi, «Fighting bugs: remove, retry, replicate, and rejuvenate Архивная копия от 27 марта 2010 на Wayback Machine» (англ.). Computer, выпруск 40, номер 2, февраль 2007, страницы 107—109, doi:10.1109/MC.2007.55
  9. The jargon file. Schroedinbug Архивная копия от 8 сентября 2013 на Wayback Machine (англ.)
  10. HindenBug. wiki.c2.com. Дата обращения: 24 октября 2019. Архивировано 8 августа 2020 года.
  11. Matt Lynley. 20 Hilarious Programming Jargon Phrases You Should Use When Talking To Engineers. Business Insider. Дата обращения: 24 октября 2019. Архивировано 24 октября 2019 года.
  12. New Programming Jargon. blog.codinghorror.com. Дата обращения: 24 октября 2019. Архивировано 4 ноября 2019 года.
  13. Breakpad. Google. Дата обращения: 11 августа 2009. Архивировано 3 февраля 2012 года.
  14. CrashRpt. Архивировано 3 февраля 2012 года.
  15. Popper, Nathaniel (2 августа 2012). Knight Capital Says Trading Glitch Cost It $440 Million. New York Times (англ.). Архивировано 5 октября 2017. Дата обращения: 13 ноября 2017.

Ссылки

  • Уязвимости в исходных кодах, «Компьютерная газета». Продолжение: Уязвимости в исходных кодах. Перепечатка: 1 часть (недоступная ссылка), 2 часть (недоступная ссылка).
  • 10 худших ошибок в программировании в истории человечества
  • 2010 CWE/SANS Top 25 Most Dangerous Software Errors частичный перевод на русский 25 самых опасных ошибок при создании программ
  • Ошибки, обнаруженные в Open Source проектах разработчиками PVS-Studio с помощью статического анализа. Можно найти полезные примеры при подготовки статей и презентаций.

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Программная ошибка, Что такое Программная ошибка? Что означает Программная ошибка?

Zapros Bag perenapravlyaetsya syuda sm takzhe drugie znacheniya Progra mmnaya oshi bka argo bag ot angl bug bukashka lyuboe melkoe chlenistonogoe v uzkom smysle klop oshibka v programme ili v sisteme privodyashaya k neozhidannomu povedeniyu programmy i kak sledstvie vydache nekorrektnogo rezultata Bolshinstvo programmnyh oshibok voznikayut iz za oshibok dopushennyh razrabotchikami programmy v eyo ishodnom kode libo v eyo dizajne Takzhe nekotorye oshibki voznikayut iz za nekorrektnoj raboty instrumentov razrabotchika naprimer iz za kompilyatora vyrabatyvayushego nekorrektnyj kod Termin programmnaya oshibka obychno upotreblyaetsya dlya oboznacheniya oshibok proyavlyayushih sebya na stadii raboty programmy v otlichie naprimer ot oshibok proektirovaniya ili sintaksicheskih oshibok Otchet soderzhashij informaciyu ob oshibke takzhe nazyvayut otchetom o probleme angl error report Otchet o kriticheskoj probleme angl crash vyzyvayushej avarijnoe zavershenie programmy nazyvayut angl crash report Programmnye oshibki lokalizuyutsya i ustranyayutsya v processe testirovaniya i otladki programmy Etimologiya termina bag Zapis v teh zhurnale V znachenii neulovimoj tehnicheskoj oshibki slovo zhuchok angl bug upotreblyalos zadolgo do poyavleniya kompyuterov personalom telegrafnyh i telefonnyh kompanij v otnoshenii nepoladok s elektrooborudovaniem i radiotehnikoj V 1878 godu Tomas Edison pisal Tak bylo so vsemi moimi izobreteniyami Pervyj shag intuiciya kotoraya prihodit kak vspyshka zatem voznikayut trudnosti ustrojstvo otkazyvaetsya rabotat i imenno togda proyavlyayutsya zhuchki kak nazyvayut eti melkie oshibki i trudnosti i trebuyutsya mesyacy pristalnogo nablyudeniya issledovanij i usilij prezhde chem delo dojdyot do kommercheskogo uspeha ili neudachi Originalnyj tekst angl It has been just so in all of my inventions The first step is an intuition and comes with a burst then difficulties arise this thing gives out and it is then that Bugs as such little faults and difficulties are called show themselves and months of intense watching study and labor are requisite before commercial success or failure is certainly reached Vo vremya Vtoroj mirovoj vojny slovom bugs imenovali problemy s radarnoj elektronikoj Po odnoj iz versij v otnoshenii programmnoj oshibki etot termin vpervye byl primenen 9 sentyabrya 1947 godaGrejs Hopper kotoraya rabotala v Garvardskom universitete s vychislitelnoj mashinoj angl Proslediv voznikshuyu oshibku v rabote programmy do elektromehanicheskogo rele mashiny ona nashla mezhdu zamknuvshimi kontaktami sgorevshego motylka Izvlechyonnoe nasekomoe bylo vkleeno skotchem v tehnicheskij dnevnik s soprovoditelnoj ironicheskoj nadpisyu Pervyj realnyj sluchaj obnaruzheniya zhuchka angl First actual case of bug being found Znachenie i klassifikaciya oshibok programmnogo obespecheniyaV zavisimosti ot etapa razrabotki PO na kotorom vyyavlyaetsya oshibka vydelyayut sintaksicheskie oshibki raspoznavaemye v kachestve takovyh translyatorom i delayushie kompilyaciyu nevozmozhnoj naprimer otsutstvie ili nesootvetstvie otkryvayushej i zakryvayushej skobok preduprezhdeniya warnings kompilyatora naprimer ispolzovanie neinicializirovannoj peremennoj V etom sluchae kompilyator mozhet zametit chto programmist delaet chto to neobychnoe veroyatno nevernoe i soobshaet ob etom odnako programmist sam prinimaet reshenie ignorirovat soobshenie ili net oshibki vremeni ispolneniya smyslovye oshibki semanticheskie naprimer vychitanie peremennyh vmesto slozheniya ili oshibka segmentacii Po vazhnosti Blokiruyushie blockers delayushie vypolnenie programmy nevozmozhnym Kriticheskie inogda showstoppers lishayushie programmu vsej poleznosti Seryoznye Neznachitelnye Kosmeticheskie Po vremeni poyavleniya Postoyanno pri kazhdom zapuske Inogda plavayushij tip Tolko na mashine u klienta zavisit ot lokalnyh nastroek u klienta Po mestu i napravleniyu Oshibki polzovatelskogo interfejsa Sistemy obrabotki oshibok Oshibki svyazannye s granichnymi usloviyami naprimer nekorrektnaya obrabotka pustoj stroki ili maksimalnogo chislovogo znacheniya Oshibki vychislenij Oshibki upravleniya potokami Oshibki obrabotki ili interpretacii dannyh Pri sostoyanii gonki Povyshenie nagruzki Oshibki kontrolya versii i identifikatorov Oshibki testirovaniya V zavisimosti ot haraktera oshibki programmy i sredy ispolneniya oshibka mozhet proyavlyatsya srazu ili naoborot dolgoe vremya ostavatsya nezamechennoj naprimer Problema 2038 goda Takzhe oshibka mozhet proyavlyatsya v vide uyazvimosti delayushej vozmozhnym nesankcionirovannyj dostup k sisteme ili DoS ataku Raznovidnosti Gejzenbag angl heisenbug programmnaya oshibka kotoraya ischezaet ili menyaet svoi svojstva pri popytke eyo obnaruzheniya Borbag angl Bohr bug oshibka kotoraya v protivopolozhnost gejzenbagu ne ischezaet i ne menyaet svoih svojstv pri popytke eyo obnaruzheniya analogichno stabilnosti modeli elektronnyh orbitalej Nilsa Bora Blizkij po znacheniyu russkoyazychnyj analog stabilnyj ili ustojchivyj bag sistematicheskaya oshibka Mandelbag angl mandel bug oshibka chyo povedenie stol slozhno chto vyglyadit haotichnym Nazvanie proishodit ot imeni Benua Mandelbrota osnovopolozhnika fraktalnoj geometrii Odnako stoit zametit po principu shodnomu s testom Tyuringa chto esli ne sushestvuet sposoba razdelit oshibku chyo povedenie kazhetsya haotichnym i oshibku chyo povedenie dejstvitelno haotichno to net nikakogo smysla razlichat mandelbag i gejzenbag Nekotorye ispolzuyut termin mandelbag dlya opisaniya oshibki chyo povedenie ne kazhetsya dejstvitelno haotichnym no stol slozhno chto dlya eyo ispravleniya trebuetsya perepisat programmu s nulya Primerom takoj oshibki mozhet sluzhit fundamentalnaya oshibka dopushennaya pri proektirovanii sistemy Shryodinbag angl schroedin bug v chest myslennogo eksperimenta s kotom Shryodingera oshibka kotoraya nikak ne proyavlyaet sebya odnako vnezapno voznikaet esli kto to natknyotsya na neyo v ishodnom kode ili popytaetsya ispolzovat programmu v neobychnyh usloviyah i osozna et chto sistema voobshe ne mogla rabotat pri nalichii takoj oshibki Posle etogo programma perestayot rabotat voobshe do teh por poka oshibka ne budet ispravlena Hotya eto zvuchit neveroyatno nekotorye programmy soderzhat v sebe takie oshibki Gindenbag angl hinden bug po nazvaniyu katastrofy dirizhablya Gindenburg oshibka s katastroficheskimi posledstviyami naprimer polnym unichtozheniem dannyh Bagson Higgsa angl higgs bugson v chest chasticy pod nazvaniem bozon Higgsa oshibka sushestvovanie kotoroj predskazano chashe vsego po kosvennym dannym ili edinichnym soobsheniyam polzovatelej no kotoruyu krajne trudno esli voobshe vozmozhno vosproizvesti iskusstvenno v usloviyah razrabotki ili testirovaniya Termin takzhe mozhet upotreblyatsya po otnosheniyu k oshibke kotoraya ochevidna v kode matematicheski dokazana no pri etom ni razu ne nablyudalas v realnyh usloviyah Poisk i ispravlenie oshibokSm takzhe Patch Dlya otladki programmy angl debugging razrabotchikami PO ispolzuyutsya specialnye programmy otladchiki angl debugger Naprimer v operacionnoj sisteme Windows mozhno ispolzovat programmu WinDbg iz paketa Dlya GNU Linux i ryada drugih UNIX podobnyh operacionnyh sistem sushestvuet otladchik GDB GNU Debugger Otchyoty ob oshibkahOsnovnaya massa oshibok obychno otlazhivaetsya na etape kompilyacii i testirovaniya programmy Odnako nekotoraya chast oshibok vsyo zhe popadaet v publikuemuyu versiyu i proyavlyaetsya na kompyuterah konechnyh polzovatelej v processe ekspluatacii PO Dlya povysheniya kachestva programmnogo obespecheniya polzuyutsya specialnymi programmami cel kotoryh otlovit oshibku v celevom prilozhenii sobrat neobhodimuyu informaciyu o eyo simptomah i otpravit otchyot po internetu k razrabotchikam dannogo PO Naprimer v operacionnuyu sistemu Windows vstroena utilita Dr Watson kotoraya po umolchaniyu otlavlivaet oshibki v prilozheniyah polzovatelya i otpravlyaet otchyot na specialnyj Server kompanii Microsoft Takzhe v kachestve primera mozhno privesti analogichnye biblioteki Breakpad i PosledstviyaAvariya rakety nositelya Arian 5 4 iyunya 1996 primer odnoj iz samyh dorogostoyashih kompyuternyh oshibok v istorii Oshibki v programmnom obespechenii medicinskogo uskoritelya Therac 25 priveli k prevysheniyu doz oblucheniya neskolkih lyudej Finansovaya organizaciya angl poteryala 440 millionov dollarov za 45 minut iz za oshibki v programme vysokochastotnogo trejdinga Sm takzheV Vikislovare est statya bag Otladka programmy Otchyot ob oshibke Tipobezopasnost Formalnaya verifikaciya GIGOPrimechaniyaIstochnik Edison to Puskas 13 noyabrya 1878 Edison papers Edison National Laboratory U S National Park Service West Orange N J citiruetsya po knige Tomasa P Hyudzhesa Thomas P Hughes American Genesis A History of the American Genius for Invention Penguin Books 1989 str Log Book With Computer Bug angl National Museum of American History Data obrasheniya 26 iyulya 2019 Arhivirovano 1 iyunya 2019 goda Danis Sharron Ann Rear Admiral Grace Murray Hopper neopr ei cs vt edu 16 fevralya 1997 Data obrasheniya 20 yanvarya 2015 Arhivirovano 15 iyunya 2010 goda Bruce Lindsay A Conversation with Bruce Lindsay angl ACM Queue zhurnal 2004 Noyabr no 8 Arhivirovano 4 fevralya 2022 goda The jargon file Bohr bug Arhivnaya kopiya ot 12 yanvarya 2013 na Wayback Machine angl The new hacker s dictionary Arhivnaya kopiya ot 8 sentyabrya 2013 na Wayback Machine angl M Grottke and K S Trivedi Software faults software aging and software rejuvenation Journal of the reliability engineering association of Japan vypusk 27 nomer 7 2005 god stranicy 425 438 Michael Grottke Kishor S Trivedi Fighting bugs remove retry replicate and rejuvenate Arhivnaya kopiya ot 27 marta 2010 na Wayback Machine angl Computer vyprusk 40 nomer 2 fevral 2007 stranicy 107 109 doi 10 1109 MC 2007 55 The jargon file Schroedinbug Arhivnaya kopiya ot 8 sentyabrya 2013 na Wayback Machine angl HindenBug neopr wiki c2 com Data obrasheniya 24 oktyabrya 2019 Arhivirovano 8 avgusta 2020 goda Matt Lynley 20 Hilarious Programming Jargon Phrases You Should Use When Talking To Engineers neopr Business Insider Data obrasheniya 24 oktyabrya 2019 Arhivirovano 24 oktyabrya 2019 goda New Programming Jargon neopr blog codinghorror com Data obrasheniya 24 oktyabrya 2019 Arhivirovano 4 noyabrya 2019 goda Breakpad neopr Google Data obrasheniya 11 avgusta 2009 Arhivirovano 3 fevralya 2012 goda CrashRpt neopr Arhivirovano 3 fevralya 2012 goda Popper Nathaniel 2 avgusta 2012 Knight Capital Says Trading Glitch Cost It 440 Million New York Times angl Arhivirovano 5 oktyabrya 2017 Data obrasheniya 13 noyabrya 2017 SsylkiUyazvimosti v ishodnyh kodah Kompyuternaya gazeta Prodolzhenie Uyazvimosti v ishodnyh kodah Perepechatka 1 chast nedostupnaya ssylka 2 chast nedostupnaya ssylka 10 hudshih oshibok v programmirovanii v istorii chelovechestva 2010 CWE SANS Top 25 Most Dangerous Software Errors chastichnyj perevod na russkij 25 samyh opasnyh oshibok pri sozdanii programm Oshibki obnaruzhennye v Open Source proektah razrabotchikami PVS Studio s pomoshyu staticheskogo analiza Mozhno najti poleznye primery pri podgotovki statej i prezentacij

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто