У 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.