Ценность любой информации своевременна и актуальна, на момент написания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