TGViewer
VW Tooltips & works VW Tooltips & works @vw_tooltips · 128 subscribers
Post #369 484
#embedded #cmake #vscode
Прикручиваем удаленную отладку к VSCode. ПО собрано с тулчейном buildroot-a
1. Для удобства работы пользоваться будем тулчейн-файлом, который генерируется buildroot-ом. Находится он где-то вот тут:
buildroot_out_folder/host/share/buildroot/toolchainfile.cmake
В моем случае это будет путь вида:

/home/valenti/Development/Embedded/exercise8/build_orange_zero_image/host/share/buildroot/toolchainfile.cmake
2. В VSCode настраиваем все, чтобы можно было работать с CMakePresets - файлами:
https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/cmake-presets.md
3. Создаем себе пресет для кросс-сборки приложения:

{
"version": 2,
"configurePresets": [
{
"name": "buildroot_orange_pi_zero",
"displayName": "Orange Pi Zero buildroot custom toolchain",
"description": "Sets orangepi custom buiild toolchain",
"generator": "Unix Makefiles",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_TOOLCHAIN_FILE": "/home/valenti/Development/Embedded/exercise8/build_orange_zero_image/host/share/buildroot/toolchainfile.cmake",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}"
}
}
]
}
4. Собираем, в теории сборка должна пройти безболезненно. По ходу докидываем в образ системы необходимые зависимости, собираем, повторяем до готовности образа. На всякий случай проверяем, как собрался итоговый образ
5. По окончанию сборки закидываем собранный бинарь на целевую железку.
6. Настраиваем в VSCode файл для запуска дебаггера:
Создаем launch.json и в него накидываем что-то вроде:

{
"version": "0.2.0",
"configurations": [
{
"name": "Test server ARM Orange Zero",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/buildroot_orange_pi_zero/app_test_drogon_server",
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"miDebuggerServerAddress": "192.168.0.116:8876", // тут 8876 это порт, на котором будет поднят gdbserver
"miDebuggerPath": "/home/valenti/Development/Embedded/exercise8/build_orange_zero_image/host/bin/arm-buildroot-linux-uclibcgnueabihf-gdb",
"externalConsole": true,
"MIMode": "gdb",
"stopAtConnect": true,
"setupCommands": [
{
"text": "source /home/valenti/Development/Embedded/exercise8/build_orange_zero_image/staging/usr/share/buildroot/gdbinit"
},
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
],
"compounds": []
}

На целевом устройстве
запускаем бинарь с поднятым gdbserver-ом:

gdbserver :8876 app_test_drogon_server

В VSCode запускаем отладку по
F5 и смотрим в консоль отладчика:

T
hread 2 "DrogonIoLoop" hit Break
point
2,
 JsonCtrl::asyncHandleHttpRequest(std::shared_ptr<drogon::HttpRequest> const&, std::function<void (std::shared_ptr<drogon::HttpResponse> const&)>&&) (this=0x5b9920, req=..., callback=...) at /home/valenti/Development/Embedded/dragon_playground/main.cpp:18
18 spdlog::info("Handlded get request to json!");

Собственно, можем удаленно отлаживать

устройство
GitHub vscode-cmake-tools/docs/cmake-presets.md at main · microsoft/vscode-cmake-tools CMake Tools provides a robust, convenient workflow for CMake projects in VS Code. It simplifies configurations with CMake presets, supports IntelliSense and built-in debugging for CMake scripts, an...
More from @vw_tooltips
  1. Oct 28, 2025https://0xax.gitbooks.io/linux-insides/content/Booting/linux-bootstrap-1.html
  2. Oct 28, 2025https://0xax.gitbooks.io/linux-insides/content/
  3. Apr 6, 2025FFT articles set: https://www.cs.princeton.edu/courses/archive/spr05/cos423/lectures/05fft…
  4. Mar 15, 2025via tempestest
  5. Nov 6, 2024So, that's amazing I'd say https://gibsonic.org/blog/2024/03/12/dnn64_p1.html
  6. Aug 14, 2024Useful rust utilities as is https://metta.systems/blog/useful-cargo-commands/
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →