у cdb / windbg есть эквивалент autoexp.dat? - PullRequest
3 голосов
/ 30 июня 2009

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

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


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

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

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

Ответы [ 2 ]

2 голосов
/ 30 июня 2009

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

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

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

1 голос
/ 30 июня 2009

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

...