gpt4 book ai didi

c++ - 使用 Visual Studio 的调试器打印链接列表的内容

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:18 24 4
gpt4 key购买 nike

我有一个故障转储。此故障转储包含一个双向链表,其中有 15000 个节点,其头指针为空,但仍然有一个有效的尾部。为了弄清楚头指针是否因逻辑错误或堆损坏而被清除,我需要从尾部向后走,直到第一个有效节点。

如果我可以到达第一个有效节点,即应该跟随头部的节点,并且它不指向空,我可以合理地假设堆损坏。如果此节点指向 null,则问题很可能是逻辑错误。

有什么方法可以使用 Visual Studio 的调试器来打印这个链表的内容吗?

我认为我可以使用即时/命令窗口来执行此操作,但据我所知,它只允许对单个语句进行评估。我需要某种循环或递归来遍历列表。

旁注,这不是 std::list

最佳答案

这篇文章展示了如何为 Visual Studio 编写自定义可视化工具:http://www.virtualdub.org/blog/pivot/entry.php?id=120 ,包括列表。有一条评论询问双向链表的可视化工具,显然这应该有效:

typedef struct _Stream (
struct _Stream *p_next,
struct _Stream *p_prev,

/* the rest of the structure */

) _Stream;

这应该是可视化工具:

_Stream{
children(
raw: [$e,!],
#list(
head: $e.p_next,
next: p_next,
skip: $e
))
}

关于c++ - 使用 Visual Studio 的调试器打印链接列表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5323580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com