@@ -4408,6 +4408,9 @@ class DevtoolIdeSdkRustTests(DevtoolIdeSdkTests):
self.assertIn('vadimcn.vscode-lldb', extensions['recommendations'])
self.assertEqual(launch['type'], 'lldb')
+ target_dbgsrc_dir = get_bb_var('TARGET_DBGSRC_DIR', recipe_name)
+ self.assertEqual(
+ launch['sourceMap'][target_dbgsrc_dir], os.path.realpath(tempdir))
server_task = next(
task for task in tasks if task['label'] == launch['preLaunchTask'])
self.assertIn('lldb-server platform --server', server_task['args'][-1])
@@ -566,15 +566,22 @@ class IdeVSCode(IdeBase):
source_map = {
"/usr/include": os.path.join(modified_recipe.recipe_sysroot, "usr", "include")
}
- if lldb_config.image_recipe.rootfs_dbg:
+ rootfs_dbg = lldb_config.image_recipe.rootfs_dbg
+ is_cargo = modified_recipe.build_tool is BuildTool.CARGO
+ if is_cargo or rootfs_dbg:
+ source_root = (
+ modified_recipe.real_srctree
+ if is_cargo else "${workspaceFolder}")
# Map build-time paths back to the workspace source tree.
for target_path, host_path in modified_recipe.reverse_debug_prefix_map.items():
if host_path.startswith(modified_recipe.real_srctree):
source_map[target_path] = (
- "${workspaceFolder}"
+ source_root
+ host_path[len(modified_recipe.real_srctree):])
- else:
+ elif rootfs_dbg:
source_map[target_path] = host_path
+
+ if rootfs_dbg:
if "/usr/src/debug" in source_map:
logger.error(
'Key "/usr/src/debug" already exists in source_map. '
Cargo debug info remaps the modified source tree to TARGET_DBGSRC_DIR. Include this reverse map in CodeLLDB launch configs even when rootfs-dbg is disabled. Use the Cargo workspace as its source root while preserving the existing rootfs-debug mappings for other recipes. AI-Generated: Uses GitHub Copilot Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com> --- meta/lib/oeqa/selftest/cases/devtool.py | 3 +++ scripts/lib/devtool/ide_plugins/ide_code.py | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-)