Debugger срещу компилатор
По принцип компилаторът е компютърна програма, която чете програма, написана на един език, който се нарича изходен език, и я превежда на друг език, който се нарича целеви език. Традиционно изходният език е език от високо ниво като C++, а целевият език е език от ниско ниво като асемблер. Debugger е компютърна програма, която се използва за намиране на бъгове/грешки в други програми. Дебъгерът позволява на програмист да спре изпълнението на програма в даден момент и да изследва характеристиките като стойности на променливи в този момент.
Какво е дебъгер?
Debugger е компютърна програма, която се използва за намиране на бъгове/грешки в други програми. Debugger позволява изпълнение на програма и проверка на всяка стъпка в изпълнението на програмата. Той също така позволява спиране на изпълнението на програмата в даден момент и промяна на някои стойности на променливи и след това продължаване на изпълнението. Всички тези възможности са предоставени, за да помогнат на програмиста да се увери, че неговата програма се държи правилно и да помогнат при идентифицирането на грешки в кода. Повечето от програмите за отстраняване на грешки предоставят възможност за изпълнение на програма стъпка по стъпка (наричано още единична стъпка), като спират, за да изследват текущото състояние на програмата, като предоставят точка на прекъсване и проследяват стойностите на променливите. Някои усъвършенствани програми за отстраняване на грешки позволяват на програмиста да пропусне място, което причинява срив или логическа грешка в кода, и да продължи изпълнението от друго място. Някои от популярните програми за отстраняване на грешки са GNU Debugger (GDB), Microsoft Visual Studio Debugger и др.
Какво е компилатор?
Компилаторът е компютърна програма, която чете програма, написана на един език, който се нарича изходен език, и я превежда на друг език, който се нарича целеви език. Най-често изходният език е език от високо ниво, а целевият език е език от ниско ниво. Така че като цяло компилаторите могат да се разглеждат като транслатори, които превеждат от един език на друг. Освен това компилаторите извършват някои оптимизации на кода. Типичният компилатор се състои от няколко основни компонента. Първият компонент е скенерът (известен още като лексикален анализатор). Скенерът чете програмата и я преобразува в низ от токени. Вторият компонент е анализаторът. Той преобразува низа от токени в дърво за анализ (или абстрактно синтактично дърво), което улавя синтактичната структура на програмата. Следващият компонент са семантичните процедури, които интерпретират семантиката на синтактичната структура. Това е последвано от оптимизации на кода и окончателно генериране на код.
Каква е разликата между дебъгер и компилатор?
Debugger е компютърна програма, която се използва за намиране на бъгове/грешки в други програми, докато компилаторът е компютърна програма, която чете програма, написана на един език, и я превежда на друг език. Компилаторите също имат способността да откриват синтактични грешки и други грешки по време на компилиране, но дебъгерите предоставят повече възможности (като наблюдение на паметта) за откриване на грешки в програмите. Тези две са две различни програми, но в повечето случаи дебъгерът и компилаторът са интегрирани в един пакет.