【发布时间】:2019-08-07 11:51:20
【问题描述】:
- 如何在 VisualStudio Code 的调试模式下为监视列表中列出的变量提供自定义名称?
- 有没有办法自动将变量从指针转换为 char*,这样 - 如果它们包含文本,用户就可以看到它?
我使用 VSCode 来调试大型 C 程序。 调试时,有大结构如:
type variable;
其中变量是一个方向列表的头部:
feature_type *variable->feature
char* variable->features->head->name // name of the 1st feature
feature_type *variable->features->head->next // 2nd feature, that has its own "name"
void* variable->features->head->a->b->c->value // value of a 1st feature.
问题是,该变量值通常是(95%?)char*,我希望看到它,但是现在 - 对于列表中的每个元素,我必须手动选择它,然后强制转换到 (const char *)。这很烦人,因为感觉打印这些变量 - 你不那么专业 - 会快得多。
(const char *) (((((type *)0x844430)->a).b).c).value // rewritten what was important on the picture that you might want to copy.
第二个问题是以这种方式转换的变量都具有相同的名称,但仅在内存地址上有所不同(这意味着我必须记住哪个是哪个)。有没有办法给他们起个名字?
【问题讨论】:
-
将文本发布为文本而不是图片在创建答案和搜索时更有用。考虑以文本形式编辑。
-
我在上面用文字写了整个例子。图片在那里显示它在调试器中的样子 - 因为我看不到变量的名称,只是结尾 (a->b->c-> value)
-
可能问题出在代码而不是IDE。
-
请发布minimal reproducible example,以便我们重现问题并帮助您调试它。另外,请说明代码要完成的工作
-
我不是在寻求帮助来调试或编写代码。代码就是这样,对于这种规模的项目,重写数据表示的核心结构将非常耗时。我清楚地写下了我的意图 - 我想为添加到监视列表中的变量提供一个 name (因为现在它们看起来都一样)并且还自动将这些变量转换为 char* 以便调试器向我显示内容。
标签: c pointers visual-studio-code void-pointers vscode-debugger