SebWeo.com
Якщо ви досі шукаєте помилки в коді за допомогою echo, var_dump() або нескінченних console.log(), настав час перейти на новий рівень. Дебагер (або налагоджувач) — це інструмент, який відрізняє аматора від професіонала. Він дозволяє зазирнути всередину вашого коду під час його виконання, значно прискорюючи пошук і виправлення помилок.
Розуміння принципів CI/CD, про які ми говорили в попередній статті, важливе для автоматизації випуску продукту. Але якісне налагодження коду — це те, що гарантує, що у ваш CI/CD конвеєр потрапить робочий код. Давайте розберемося, як приборкати цей потужний інструмент у Visual Studio Code.
Дебагер — це спеціальна програма, яка дозволяє виконувати ваш код крок за кроком, “заморожуючи” його в будь-який момент для аналізу. Уявіть, що ви можете зупинити час і роздивитися, які значення мають всі ваші змінні, який шлях проходить програма і де саме логіка дає збій.
Основні можливості, які надає дебагер:
Для PHP процес налаштування трохи складніший, оскільки вимагає встановлення серверного розширення Xdebug. Це розширення слугує мостом між рушієм PHP та вашим VS Code.
Спочатку переконайтеся, що Xdebug встановлений на вашому сервері. Найпростіший спосіб — скористатися офіційним майстром налаштування Xdebug. Він проаналізує вивід вашої команди phpinfo() і дасть точні інструкції.
Після встановлення додайте наступні рядки у ваш файл php.ini:
[xdebug] zend_extension="шлях/до/вашого/xdebug.so" ; або просто zend_extension=xdebug xdebug.mode=debug xdebug.start_with_request=yes
Важливо: Після зміни php.ini не забудьте перезапустити ваш веб-сервер (Apache, Nginx).
.vscode/launch.json. Зазвичай стандартна конфігурація “Listen for Xdebug” працює ідеально.{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
index.php.F5). Внизу з’явиться помаранчева смуга, що означає, що VS Code “слухає” підключення.Тепер ви можете використовувати панелі дебагера для аналізу: переглядати змінні, стек викликів та керувати виконанням за допомогою кнопок “Step Over” (F10), “Step Into” (F11) тощо.
З JavaScript (зокрема, з Node.js) все набагато простіше, оскільки дебагер вбудований у платформу і VS Code підтримує його “з коробки”.
Створіть простий JS-файл, наприклад app.js.
function calculateSum(a, b) {
let result = a + b;
return result;
}
const x = 10;
const y = 25;
const sum = calculateSum(x, y);
console.log(`The sum is: ${sum}`);
Перейдіть на вкладку “Run and Debug”. Якщо у вас ще немає файлу launch.json, створіть його, вибравши середовище “Node.js“. Конфігурація “Launch Program” буде створена автоматично.
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/app.js"
}
]
}
app.js, наприклад, на рядку 2, всередині функції.F5.Програма запуститься і одразу зупиниться на вашому брейкпоінті. Інтерфейс буде абсолютно таким же, як і при налагодженні PHP: зліва ви побачите локальні змінні (a та b), а внизу — інтерактивну консоль. Ви можете покроково пройти виконання коду і побачити, як обчислюється змінна result.
Іноді потрібно зупинити код не завжди, а лише за певної умови (наприклад, у циклі, коли лічильник i дорівнює 50). Для цього клацніть правою кнопкою миші на брейкпоінті та виберіть “Edit Breakpoint…”. Ви можете вказати умову (Expression), наприклад i === 50. Тепер дебагер зупиниться лише тоді, коли ця умова стане істинною. Це надзвичайно економить час!
У нашій подорожі світом сокетів ми почали з "верхнього поверху" — WebSocket у браузері, потім…
У попередній статті ми говорили про WebSockets — технологію, що дозволяє створювати інтерактивні чати в…
Шкіра немовляти – тонка та ніжна. Ще не справляється із захистом організму від зовнішніх факторів.…
Уявіть собі телефонну розмову. Ви дзвоните другу, він піднімає слухавку, і ви можете говорити одночасно,…
Довгий час планшети сприймалися виключно як пристрої для споживання контенту: подивитися YouTube, погортати стрічку новин…
Ви внесли правки в CSS, виправили критичний баг у JavaScript, завантажили файли на сервер і…