cdb / windbg是否具有autoexp.dat的等价物?

时间:2009-06-30 00:58:33

标签: c++ c visual-studio windbg cdb

我想改变使用'dt'或'??'显示某些类型的方式以类似于使用autoexp.dat执行此操作的方式。有没有办法做到这一点?

例如,我有一个像这样的结构:


struct Foo
{
    union Bar
    {
       int a;
       void *p;
    } b;
};

我有几百个这样的阵列,我知道所有这些都指向一个结构Bar。有没有办法告诉cdb,无论如何,在这个表达式中,'p'是指向Bar的指针?这是你可以用autoexp做的事情。 (这里的具体示例是我有一个可以包含任何类型的键的stashtable,但我知道它们的键是字符串。实现将它们存储为void指针)。

提前致谢!

2 个答案:

答案 0 :(得分:2)

我认为没有像autoexp.dat那样简单。

您有两个可能的选项 - 您可以使用调试器命令编写一个简单的脚本文件,以您希望的方式转储数据结构并使用“$<filename”命令(或其中一个变体)。结合用户别名,您可以非常轻松自然地使用它。

第二个选项涉及更多,但随之而来的是更强大的功能 - 编写一个转储DLL来转储数据结构。对于你正在谈论的事情,这可能是过度的。但是你有强大的调试器扩展功能(实际上,调试工具包中的大部分功能都是以这种方式实现的)。 SDK与调试器一起打包,因此很容易确定这是否是您可能需要的。

答案 1 :(得分:1)

您可以说dudadump memory作为unicode或ascii字符串。