CodeLLDB 和 VSCode - 如何打印数组

问题描述 投票:0回答:2

使用 CodeLLDB 扩展,我成功在 VSCode 中使用 lldb 调试我的 C 项目。

问题是我无法在 VSCode 监视窗口中使用 lldb 命令。
例如,我尝试使用

parray <COUNT> <EXPRESSION>
打印数组中的前 10 个项目。
这是我得到的:

enter image description here

有没有办法使用lldb来操作数据?

作为参考,使用 GDB,您可以在 VSCode 中执行

*myarr@10

c visual-studio-code debugging lldb
2个回答
2
投票

parray
是一个 lldb 命令行命令。 看起来监视窗口需要一个表达式,而不是 lldb 命令。 lldb 的表达式解析器与 gdb 不同,只是底层语言解析器(例如,它使用 C++ 的 clang 副本)。 这使得它成为您提供的表达式的更忠实的评估器,但限制了我们可以引入的以调试器为中心的语法(如 gdb
@10
)。 因此,您可以
watch
逐一处理元素,但没有“数组的元素 0-9”的 C 语法,因此表达式解析器也不支持这一点。

想必,VSCode 有一个用于调试器命令的“调试器控制台”。 您可以在此处输入 parray 命令。 lldb 也有

stop hooks
,所以如果你想在每次停止时在控制台中看到这个数组的值,你可以这样做:

(lldb) target stop-hook add -o "parray 10 passport.data"

停止挂钩可以设置为仅针对某些功能触发,因此您也可以将此打印限制为定义护照的功能。


0
投票

我终于找到了解决方案,仅适用于 VSCode 的 CodeLLDB 扩展。

查看 CodeLLDB 手册后,我找到了 Formatting 部分。它表示

[<num>]
前缀表示给定长度的数组。

例如,给定一个数组

char str[100];
,您可以在 DEBUG CONSOLE 中使用
? str,c[10]
或在 WATCH TAB EXPRESSION 中使用
str,c[10]
来获取前 10 个字符值。

© www.soinside.com 2019 - 2024. All rights reserved.