Програмна грешка

Софтуерна грешка е проблем в кода на компютърна програма, който я прави неработеща. Те могат да причинят неудобство на потребителя и да доведат до срив или замръзване на компютъра. Повечето компютърни програми имат грешки. За програма, която има голям брой грешки (или евентуално една или няколко сериозни грешки), се казва, че е бъгава.

Повечето грешки се дължат на лошо програмиране от страна на разработчика, но понякога те могат да бъдат причинени от проблеми с компилатора. Когато се открият грешки, хората изпращат доклади за грешки на разработчика, за да му съобщят за грешката и да му позволят да я отстрани.

Понякога хората казват, че компютърът им има грешка, когато нещо не е наред с него. Проблемът обикновено е причинен от компютърен вирус, който е заразил компютъра им и го кара да се забавя или да прави различни неща.

Някои грешки са безвредни, например много видеоигри неправилно позволяват на обектите да се движат през стени. Други грешки са по-сериозни, например грешка в навигационна система, която води до експлозия на самолет.



Видове грешки

Препълване на буфера

Препълването на буфера се случва, когато програмата записва или чете от област от паметта, до която не трябва да има достъп.

Аритметично препълване

Аритметично препълване се получава, когато число, съдържащо се в променлива, се увеличи над най-голямото число, което променливата позволява. Това обикновено води до връщане на числото обратно към нула.

Безкраен цикъл

Безкраен цикъл се получава, когато програмата влезе в цикъл (поредица от инструкции, която се повтаря многократно) и няма изход от цикъла. Това може да доведе до замръзване на програмата.

Грешки при закръгляне

Ако променливата с плаваща запетая няма достатъчна точност, записаното в нея число може да бъде неточно. Това може да доведе до различни проблеми в зависимост от вида на програмата, например навигационна програма може да се насочи към непредвидено място или да изкриви звука в програма за запис на звук.

Деление на нула

Делението на нула е невалидна математическа операция. Ако дадена програма раздели цяло число на нула, тя ще се срине. В Linux съобщението, което се показва при появата на тази грешка, е "floating point exception" (изключение с плаваща запетая), въпреки че не става въпрос за числа с плаваща запетая. Математиката с плаваща запетая понякога позволява деление с нула. Това обикновено води до специална стойност "не е число".

Проблеми с изрязването

Във видеоигрите проблемите с изрязването, наричани още проблеми с откриването на сблъсъци, възникват, когато даден обект премине през преграда (например стена, под или таван), през която не е предвидено да премине. Това е много често срещана грешка, която се среща в много видеоигри. Това може да се случи например в Doom 2, когато смачкано чудовище бъде възкресено от архивраг. Проблемите с изрязването често могат да се използват като тактика за пестене на време в скоростни бягания, например в Super Mario 64 е възможно да се пропусне изкачването на спираловидното стълбище в замъка, като се скочи през тавана.

Грешки в сигурността

Грешките в сигурността са грешки, които позволяват на нарушителя да получи достъп до компютъра или да предизвика срив на компютъра. Причиняването на срив на компютъра се нарича атака за отказ на услуга. Отстраняването на грешки в сигурността се счита за особено важно, тъй като те могат да позволят на нарушителите да откраднат важна информация, например номера на кредитни карти или пароли. Примери за грешки в сигурността са Heartbleed и Shellshock.



Misbugs

Грешка е грешка, която е използвана като функция. Пример за това е грешка в телефон с Android, която позволява на потребителите да получат root достъп.



Хардуерни грешки

Някои грешки засягат хардуера (физическите части на компютъра), а не софтуера. Например изпълнението на инструкцията lock cmpxchg8b eax на старите процесори Pentium ще доведе до спиране на работата на процесора до рестартиране. Тъй като хардуерните грешки са физически недостатъци на дизайна, те не могат да бъдат коригирани с актуализация на софтуера, въпреки че може да е възможно грешката да бъде заобиколена (скрита) с актуализация на софтуера.



Въпроси и отговори

В: Какво представлява софтуерна грешка?


Отговор: Софтуерна грешка е проблем с кода на компютърна програма, който я кара да не работи правилно.

В: Какви са последствията от софтуерна грешка?


A: Софтуерната грешка може да причини неудобство на потребителя и да доведе до срив или замръзване на компютъра.

В: Всички ли компютърни програми имат грешки?


О: Да, повечето компютърни програми имат грешки.

В: Какво представлява програма с грешки?


О: Програма с грешки е тази, която има голям брой грешки или евентуално една или няколко сериозни грешки.

Въпрос: Кой е отговорен за повечето грешки в компютърните програми?


О: Повечето грешки се дължат на лошо програмиране от страна на разработчика, но понякога те могат да бъдат причинени от проблеми с компилатора.

В: Какво правят хората, когато открият грешка в компютърна програма?


О: Когато се открият грешки, хората изпращат доклади за грешки на разработчика, за да го информират за грешката и да му позволят да я отстрани.

В: Какво имат предвид хората, когато казват, че компютърът им има бъг?


О: Когато хората казват, че компютърът им има грешка, те обикновено имат предвид, че нещо не е наред с него, което обикновено се дължи на компютърен вирус, който е заразил компютъра им и го кара да се забавя или да прави различни неща.

AlegsaOnline.com - 2020 / 2023 - License CC3