Question

I'd like to change the way some types are displayed using either 'dt' or '??' in a manner similar to how you can do that with autoexp.dat. Is there a way to do this?

For example, I have a structure something like this:


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

And I've got an array of a few hundred of these, all of which I know point to a structure Bar. Is there any way to tell cdb that, in this expression anyway, that 'p' is a pointer to Bar? This is the kind of thing you could do with autoexp. (The concrete example here is that I've got a stashtable that can have keys of any type, but I know they keys are strings. the implementation stores them as void pointers).

Thanks in advance!

Was it helpful?

Solution

I don't think there's anything as simple as autoexp.dat.

You have a couple potential options - you can write a simple script file with the debugger commands to dump the data structure in the way you want and use the "$<filename" command (or one of its variants). Combined with user aliases you can get this to be pretty easy and natural to use.

The second option is quite a bit more involved, but with it comes much more power - write an extension DLL that dumps your data structure. For something like what you're talking about this is probably overkill. But you have immense power with debugger extensions (in fact, much of the power that comes in the Debugging tools package is implemented this way). The SDK is packaged with the debugger, so it's easy to determine if this is what you might need.

OTHER TIPS

You can say du or da to have it dump memory as unicode or ascii strings.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top