Re: [PATCH v2 2/5] devtool: code: Add source mapping for debug source files

Enguerrand de Ribaucourt
2024-02-21T14:57:07Z

On 21/02/2024 15:12, Enguerrand de Ribaucourt wrote:
>
>
> On 20/02/2024 10:01, adrian.freihofer@gmail.com wrote:
>> On Mon, 2024-02-19 at 17:55 +0100, Enguerrand de Ribaucourt wrote:
>>> When launching the debug configuration, the source files from the
>>> debug
>>> rootfs were openened in the editor instead of the local workspace
>>> files.
>>> We add an exception to properly map them to the file being developed
>>> and
>>> compiled by the IDE integration. This also more closely matches what
>>> the
>>> user would expect compared to native development.
>>>
>>> This is also true for the devtool fallback mode.
>>
>> This looks still wrong to me. If files from the rootfs are openend for
>> a recipe which is in the workspace, the SDK is broken and we need to
>> understand and fix that. This patch does not solve that, but will make
>> it much harder to find the right solution for this issue.
> Hi Adrian,
>
> This is affecting essentially the devtool fallback mode. Since it's
> compiled through devtool, it's using the bitbake packaging information.
>
> Steps to reproduce:
>  - devtool modify powertop (autotools recipe, currently fallback)
>  - devtool ide-sdk powertop [args...]
>  - open the powertop sources workspace
>  - run the debug launch configuration
>  - initial breakpoint opens the rootfs-dbg main.cpp instead of the
> current workspace
>
> This probably will get fixed for autotools with your specific class
> support, but will remain for the fallback mode.
>
> Do we want to keep this source map, but only for the fallback mode? Like
> you say, it's kinda "cheating" the debug information, but since we are
> in fallback mode, the devtool packaging is supposed to be using the
> sources from the workspace, so it's more like "hinting" at the proper
> source.
It also affects more meson projects like lighttpd. The "hint" would
still be valid given how it's built and deployed now. If you are still
working on an alternative tinfoil deploy method, maybe it's not affected.
>>
>> Adrian
>>
>>>
>>> Signed-off-by: Enguerrand de Ribaucourt
>>> <enguerrand.de-ribaucourt@savoirfairelinux.com>
>>> ---
>>>   scripts/lib/devtool/ide_plugins/ide_code.py | 1 +
>>>   scripts/lib/devtool/ide_sdk.py              | 1 +
>>>   2 files changed, 2 insertions(+)
>>>
>>> diff --git a/scripts/lib/devtool/ide_plugins/ide_code.py
>>> b/scripts/lib/devtool/ide_plugins/ide_code.py
>>> index b2193130d2e..c063b7d0590 100644
>>> --- a/scripts/lib/devtool/ide_plugins/ide_code.py
>>> +++ b/scripts/lib/devtool/ide_plugins/ide_code.py
>>> @@ -234,6 +234,7 @@ class IdeVSCode(IdeBase):
>>>           if gdb_cross_config.image_recipe.rootfs_dbg:
>>>               launch_config['additionalSOLibSearchPath'] =
>>> modified_recipe.solib_search_path_str(
>>>                   gdb_cross_config.image_recipe)
>>> +            src_file_map[os.path.join("/usr/src/debug",
>>> modified_recipe.pn, modified_recipe.pv)] = "${workspaceFolder}"
>>>               src_file_map["/usr/src/debug"] = os.path.join(
>>>                   gdb_cross_config.image_recipe.rootfs_dbg, "usr",
>>> "src", "debug")
>>>           else:
>>> diff --git a/scripts/lib/devtool/ide_sdk.py
>>> b/scripts/lib/devtool/ide_sdk.py
>>> index 14679744807..f292edbe25c 100755
>>> --- a/scripts/lib/devtool/ide_sdk.py
>>> +++ b/scripts/lib/devtool/ide_sdk.py
>>> @@ -356,6 +356,7 @@ class RecipeModified:
>>>               'PACKAGE_DEBUG_SPLIT_STYLE')
>>>           self.path = recipe_d.getVar('PATH')
>>>           self.pn = recipe_d.getVar('PN')
>>> +        self.pv = recipe_d.getVar('PV')
>>>           self.recipe_sysroot = os.path.realpath(
>>>               recipe_d.getVar('RECIPE_SYSROOT'))
>>>           self.recipe_sysroot_native = os.path.realpath(
>>
> Enguerrand de Ribaucourt
>
Enguerrand de Ribaucourt