Message ID | 20250918210754.477049-1-adrian.freihofer@siemens.com |
---|---|
Headers | show
Return-Path: <adrian.freihofer@siemens.com> X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED1CCCAC5AB for <webhook@archiver.kernel.org>; Thu, 18 Sep 2025 21:08:20 +0000 (UTC) Received: from mta-64-227.siemens.flowmailer.net (mta-64-227.siemens.flowmailer.net [185.136.64.227]) by mx.groups.io with SMTP id smtpd.web10.308.1758229694130845941 for <openembedded-core@lists.openembedded.org>; Thu, 18 Sep 2025 14:08:14 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=adrian.freihofer@siemens.com header.s=fm1 header.b=MC6eCbF9; spf=pass (domain: rts-flowmailer.siemens.com, ip: 185.136.64.227, mailfrom: fm-1329275-20250918210810f09ff3b07100020787-0jtrxt@rts-flowmailer.siemens.com) Received: by mta-64-227.siemens.flowmailer.net with ESMTPSA id 20250918210810f09ff3b07100020787 for <openembedded-core@lists.openembedded.org>; Thu, 18 Sep 2025 23:08:11 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=adrian.freihofer@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc; bh=6duLSynwgoAhJALG+rWqccUGTpHRgF5I1oKDTvTkGvw=; b=MC6eCbF9j/VcrW/sMx+ssn0HuyVByaRaoj6DbnUdi782lOhLdAcofLqwisAKRUn+/6PbSR QXAA1pOMWftKQKa83/T7JKGW33BeV8SdMvdA+CTG2G2t/+FB8s3sGdC6ncfWZV/zYpez9fQb 5uW88D3qUdIZPldrNaJln8+pnZKjPhQVw8N6ExRAf4BL12ypQhV6VrZvQzjzkN1i9W9p+2t8 GDJO1eTrwhq/5vJPSOeSvZJKysOU7TzyXJtg1cTHFt8ZoqxLl+Zihy8L/HkMbA8ovzL7uJq+ 8DqPa+cLBU608TUks0xTTjZ2tt0K7nZjR6qm7V9sj9s1wK8nGZeuRSmg==; From: AdrianF <adrian.freihofer@siemens.com> To: openembedded-core@lists.openembedded.org Cc: Adrian Freihofer <adrian.freihofer@siemens.com> Subject: [PATCH 00/19] devtool: ide-sdk: Enhance debugging and testing Date: Thu, 18 Sep 2025 23:07:02 +0200 Message-ID: <20250918210754.477049-1-adrian.freihofer@siemens.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-1329275:519-21489:flowmailer List-Id: <openembedded-core.lists.openembedded.org> X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for <openembedded-core@lists.openembedded.org>; Thu, 18 Sep 2025 21:08:20 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223670 |
Series |
devtool: ide-sdk: Enhance debugging and testing
|
expand
|
From: Adrian Freihofer <adrian.freihofer@siemens.com> This patch series enhances the devtool ide-sdk functionality with improvements to debugging capabilities, service integration, and developer workflow optimization. Enhancements: - GDB Pretty-Printing: Added support for C++ STL type pretty-printing using GCC Python helper scripts, making complex STL containers readable during debugging sessions - Multiple Debug Modes: Introduced gdbserver attach mode support for debugging running services alongside the existing --once mode - Service Detection: Automatic detection of binaries that run as services. For these binaries an additional --attach debug configuration gets generated. - Improved Path Mapping: Enhanced DEBUG_PREFIX_MAP evaluation for better source file location during remote debugging - BitBake-Free Deployment: Eliminated bitbake dependency during daily development workflow, making deployment self-contained and faster. This patch was rejected one or two years ago. Usually I try to not "send the same crap again". However, I think the situation changed a bit, since then: - All alternative approaches which were discussed turned out as not feasible. bitbake -b does not work. Bitbake's server mode does no longer observe the recipes via inotify. This gives up the idea of using bitbake as a server running behind an IDE. - The patch proved to work very well and did not break since more than a year or two? So it does not seem to be that problematic. If that would change, reverting it should be possible at any time. - Using the ide-sdk with this patch versus without this patch makes a major difference from a usability perspective. It's much quicker and it's much more predictable. - Kernel Module Support: Basic support for kernel module development with proper environment setup. There is no automated deployment or e.g. support for kgdb. But compiling works as for other plugins. - VSCode plugin: Write the commands for starting the remote gdbserver directly into the launch.json file which makes it much simpler to understand and tweak. Testing improvements: - Systemd/SysV Support: Extended C++ examples to run as both one-shot executables and long-running services with proper user/group management for two reasons: - Testing remote debugging with attached mode - Test the deploy script which runs on pseudo and should preserve the user and group flags also during the development. - Added full remote debugging test coverage for VSCode with launch.json and tasks.json with Qemu. - GDB pretty-printing validation for STL containers - Proper file ownership verification with pseudo - Added comprehensive debug logging and better error reporting for oe-selftest -r devtool.DevtoolIdeSdkTests Adrian Freihofer (19): fedora_essential.sh: add util-linux-script package oe-selftest: cpp-example meson version warning oe-selftest: devtool: add missing imports meta-skeleton: fix spaces in assignment devtool: ide-sdk deploy-target without bitbake oe-selftest: devtool: DevtoolIdeSdkTests debug logging cpp-example: run as a service oe-selftest: devtool: check example services are running devtool: ide-sdk: make install_and_deploy script pass target arg devtool: ide-sdk: add gdbserver attach mode support devtool: ide-sdk: vscode remove scripts devtool: ide-sdk: move code to ide_none oe-selftest: devtool ide-sdk cover vscode remote debugging devtool: ide-sdk: evaluate DEBUG_PREFIX_MAP cpp-example: Add std::vector example devtool: ide-sdk: Support GDB pretty-printing for C++ STL types oe-selftest: devtool: add test for gdb pretty-printing module.bbclass: move environment setup to kernel_module.py devtool: ide-sdk: support kernel module development .../host_packages_scripts/fedora_essential.sh | 2 +- .../recipes-test/cpp/cpp-example.inc | 52 +- .../recipes-test/cpp/files/CMakeLists.txt | 14 +- .../recipes-test/cpp/files/config.h.in | 10 + .../cpp/files/cpp-example-lib.cpp | 29 + .../cpp/files/cpp-example-lib.hpp | 3 + .../recipes-test/cpp/files/cpp-example.conf | 3 + .../recipes-test/cpp/files/cpp-example.cpp | 46 +- .../recipes-test/cpp/files/cpp-example.init | 84 +++ .../cpp/files/cpp-example.service | 12 + .../recipes-test/cpp/files/meson.build | 21 +- .../cpp/files/test-cpp-example.cpp | 2 + .../recipes-test/cpp/meson-example.bb | 2 + .../linux/linux-yocto-custom.bb | 2 +- meta/classes-recipe/module.bbclass | 21 +- meta/lib/oe/kernel_module.py | 22 + meta/lib/oeqa/selftest/cases/devtool.py | 494 +++++++++++++++--- scripts/lib/devtool/ide_plugins/__init__.py | 234 ++++----- scripts/lib/devtool/ide_plugins/ide_code.py | 222 ++++++-- scripts/lib/devtool/ide_plugins/ide_none.py | 140 ++++- scripts/lib/devtool/ide_sdk.py | 384 +++++++++++++- scripts/lib/devtool/standard.py | 7 +- 22 files changed, 1483 insertions(+), 323 deletions(-) create mode 100644 meta-selftest/recipes-test/cpp/files/config.h.in create mode 100644 meta-selftest/recipes-test/cpp/files/cpp-example.conf create mode 100644 meta-selftest/recipes-test/cpp/files/cpp-example.init create mode 100644 meta-selftest/recipes-test/cpp/files/cpp-example.service create mode 100644 meta/lib/oe/kernel_module.py