У cdb/windbg есть эквивалент autoexp.dat?

Я хотел бы изменить способ отображения некоторых типов, используя 'dt' или '??' таким же образом, как вы можете сделать это с autoexp.dat. Есть ли способ сделать это?

Например, у меня есть структура что-то вроде этого:


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

И у меня есть массив из нескольких сотен из них, и все, что я знаю, указывают на структуру Bar. Есть ли способ сказать cdb, что в этом выражении в любом случае, что 'p' является указателем на Bar? Это то, что вы можете сделать с помощью autoexp. (Конкретный пример здесь - у меня есть stashtable, в котором могут быть ключи любого типа, но я знаю, что они являются строками. Реализация хранит их как пустые указатели).

Заранее спасибо!

2 ответа

Решение

Я не думаю, что есть что-то столь же простое, как autoexp.dat.

У вас есть пара возможных вариантов - вы можете написать простой файл сценария с командами отладчика, чтобы вывести структуру данных так, как вы хотите, и использовать "$<filename"команда (или один из ее вариантов). В сочетании с псевдонимами пользователя вы можете сделать это довольно простым и естественным в использовании.

Второй вариант немного сложнее, но вместе с тем он дает гораздо больше возможностей - напишите библиотеку расширений, которая выводит вашу структуру данных. Для чего-то вроде того, о чем вы говорите, это, вероятно, излишне. Но у вас есть огромные возможности с расширениями отладчика (на самом деле, большая часть мощности, которая входит в пакет инструментов отладки, реализована таким образом). SDK поставляется вместе с отладчиком, поэтому легко определить, что вам может понадобиться.

Ты можешь сказать du или же da чтобы получить дамп памяти в виде строк Unicode или ASCII.

Другие вопросы по тегам