Ценность любой информации своевременна и актуальна, на момент написанияNode.jsПоследний выпуск является
v11.14.0
,LTS
даv10.15.3
, исходный код, появляющийся в тексте, взят изtag
:v11.14.0
. Используемая компьютерная среда: macOs 10.14.2.
предисловие
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.
Node.jsосновывается наV8а такжеlibuvпостроен, нижний слойC/C++
реализация, в то время как часть стандартной библиотеки используетJS
записывать. Поэтому отладка исходного кода Node.js разделена на две части:C/C++
отладка кода иJS
Отладка кода.Более...
Готов к работе
- Node.js исходный кододна порция
-
Visual Studio Codeили другая отладка
C/C++
,JS
из调试器/IDE
.
начать отладку
компилировать
релизная версияNode
Он не поддерживает отладку, поэтому нам нужно самостоятельно собрать отлаживаемый код из исходного кода.Node
,Node
Проходит сборка проектаmake
Для управления разработчики готовыconfigure
файл, поэтому создайте собственную версиюNode
Очень удобно.
Шаг 1: Добавьте отладчик в файл записи
Сначала перейдите в скачанный каталог репозитория исходного кода Node.js (все последующие операции выполняются в этом каталоге).
ИсправлятьJS
Исходный файл записи (./lib/internal/bootstrap/node.js
) в файле, добавьте его в шапкуdebugger
.
'use strict';
debugger; // <<--- 在这里加入 debugger;
// This file is compiled as if it's wrapped in a function with arguments
// passed by node::RunBootstrapping()
/* global process, require, internalBinding, isMainThread, ownsProcessState */
/* global primordials */
const { Object, Symbol } = primordials;
const config = internalBinding('config');
const { deprecate } = require('internal/util');
setupProcessObject();
setupGlobalProxy();
setupBuffer();
Шаг 2: Выполните компиляцию
Node.js использует make для управления проектами, разработчики подготовили файлы конфигурации, нам просто нужно выполнить./configure
Вы можете сгенерировать конфигурацию компиляции по умолчанию, доступную в текущей среде, а затем выполнить make для компиляции. Но конфигурация компиляции по умолчанию не включает режим отладки, поэтому нам нужно выполнить./configure
добавить когда--debug
Отлаживаемая конфигурация сборки может быть сгенерирована и затем скомпилирована.
Полная команда выглядит следующим образом:
#!/bin/bash
./configure --debug
make -C out BUILDTYPE=Debug -j4
echo "showtime 🎉"
Поскольку нам нужно перекомпилировать каждый раз, когда мы изменяем файл, поэтому я написал эти команды здесьbuild.sh
Когда последующие модификации необходимо перекомпилировать, запустите этот файл один раз.
Перед выполнением этого файла вам необходимо предоставить этому файлу права на выполнение:
chmod +x build.sh
Готово, просто введите в командной строке./build.sh
Можешь начать компилировать, а потом идти делать чашку ☕️ (кофе или чай? чай, пожалуйста).
Скомпилированный файл можно найти в./out/Debug/
находится в каталоге, внутриNode
Файлы - это все, что нам нужно.
Отладка исходного кода JS
Шаг 1: Подготовьте тестовый файл
Создайте проект/файл для отладки, напишите в нем все, что хотите, конечно, вы также можете использовать существующий проект/файл.
Для удобства яNode.js
Каталог репозитория исходного кода создается нижеtest.js
файл и написать:
console.log('hello world');
Шаг 2. Запустите службу
Теперь воспользуемся скомпилированнымNode
Выполните этот файл:
./out/Debug/Node --inspect-brk=9229 test.js
Когда вы увидите следующее приглашение, ваша служба включена и ее можно отлаживать:
Debugger listening on ws://127.0.0.1:9229/0aeaa4ec-113b-4e08-94d9-0477c61d59ac
For help, see: https://nodejs.org/en/docs/inspector
Шаг 3: Отладка
Далее доделываем вторую половину, используя установленныйVisual Studio Code
открыть свой проект
Щелкните логотип паука слева, чтобы войти в интерфейс конфигурации отладки, а затем нажмите кнопку конфигурации в правом верхнем углу (откройте.vscode/launch.json
)
Примечание. В Visual Studio Code необходимо открыть проект, чтобы можно было создать файл конфигурации.
Заполните следующее содержимое в файле конфигурации:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attact Program",
"port": 9229
}
]
}
Не забудьте сохранить изменения.
Вернитесь к интерфейсу настроек и выберите «Программу атаки», которую вы только что настроили, затем щелкните зеленый треугольник, чтобы начать, а затем вы можете войти вNode.js
в исходном кодеJS
Частично отлажен.
Затем каждый раз, когда вы меняете свой код, не забудьте выполнить следующееbuild.sh
Скомпилируйте снова.
Дополнительные сведения об отладке JS в vscode см.здесь
Отладка исходного кода C/C++
Установить плагин
Visual Studio CodeПо умолчанию не поддерживаетсяC/C++
Для отладки нужно установить соответствующий плагин, открытьVisual Studio Codeмагазин плагинов,
поискc++
, установка называетсяC/C++
Официальный плагин для
отладка
Как и часть JS, откройте установленныйVisual Studio Code
открыть свой проект
Щелкните логотип паука слева, чтобы войти в интерфейс конфигурации отладки, а затем нажмите кнопку конфигурации в правом верхнем углу (откройте.vscode/launch.json
)
Примечание. Visual Studio Code необходимо открыть каталог, чтобы иметь возможность создавать файлы конфигурации.
Заполните следующее содержимое в файле конфигурации:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/out/Debug/Node",
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
}
]
}
Помните, не забудьте сохранить.
Затем используйте IDE вC/C++
входной файл./src/node_main.cc
Отметьте логотип отладчика.
Вернитесь к интерфейсу настроек и выберите «Программу атаки», которую вы только что настроили, затем щелкните зеленый треугольник, чтобы начать, а затем вы можете войти вNode.js
в исходном кодеC/C++
Частично отлажен.
Ссылаться на
- Building Node.js
- Изучение исходного кода Node.js (1) Используйте cLion для отладки исходного кода Node.js
- Грубое чтение исходного кода узла (2): подробное объяснение процесса компиляции узла и способов локального изменения и отладки исходного кода.
- Грубое чтение исходного кода узла (5): путем отладки кода js библиотеки ./lib, чтобы увидеть изменения в рабочей среде javascript в узле.
- Глубокое понимание Node.js: основные идеи и анализ исходного кода
- Создайте среду разработки и отладки C/C++ с помощью Visual Studio Code.
- C++ programming with Visual Studio Code