Я хотел бы изменить способ отображения некоторых типов с помощью «dt» или «?» аналогично тому, как вы можете сделать это с помощью autoexp.dat. Есть ли способ сделать это?У cdb/windbg есть эквивалент autoexp.dat?
К примеру, у меня есть структура что-то вроде этого:
struct Foo
{
union Bar
{
int a;
void *p;
} b;
};
И у меня есть массив несколько сотен из них, все из которых я знаю точку в структуру адвокатуры. Есть ли способ сообщить cdb, что в этом выражении, что 'p' является указателем на Bar? Это то, что вы могли бы сделать с autoexp. (Конкретным примером здесь является то, что у меня есть stashtable, который может иметь ключи любого типа, но я знаю, что они являются строками, реализация сохраняет их как указатели void).
Заранее благодарен!
Если у меня есть массив, который имеет элемент, указывающий на строку, которая находится где-то еще в памяти, я могу вызвать 'da' на адрес этого указателя как часть печати массива? – aaron
Если вы знаете начальный адрес массива, вы должны иметь возможность рассчитать смещение от начального адреса к элементу, который вы хотите (sizeof (struct) * i), а затем добавить смещение (выровненный по DWORD) элементу внутри структура. Вы также можете сделать dt -r по адресу struct, чтобы отладчик рекурсивно сбросил все члены. –