есть ли у cdb/windbg эквивалент autoexp.dat?
-
21-08-2019 - |
Вопрос
Я хотел бы изменить способ отображения некоторых типов с использованием либо «dt», либо '?? таким же, как вы можете сделать это с помощью AutoExp.dat.Есть ли способ сделать это?
Например, у меня есть примерно такая структура:
struct Foo
{
union Bar
{
int a;
void *p;
} b;
};
И у меня есть массив из нескольких сотен таких элементов, и все они, как я знаю, указывают на структуру Bar.Есть ли способ сообщить cdb, что в этом выражении «p» является указателем на Bar?Это то, что вы можете сделать с помощью autoexp.(Конкретный пример: у меня есть таблица хранения, в которой могут быть ключи любого типа, но я знаю, что эти ключи являются строками.реализация хранит их как указатели void).
Заранее спасибо!
Решение
Я не думаю, что есть что-то более простое, чем autoexp.dat.
У вас есть несколько потенциальных вариантов: вы можете написать простой файл сценария с командами отладчика, чтобы выгружать структуру данных так, как вы хотите, и использовать "$<filename
"команда (или один из ее вариантов).В сочетании с псевдонимами пользователей вы можете сделать это довольно простым и естественным в использовании.
Второй вариант немного сложнее, но с ним гораздо больше возможностей — напишите расширение DLL, которое выгружает вашу структуру данных.Для чего-то вроде того, о чем вы говорите, это, вероятно, излишество.Но у вас есть огромные возможности с расширениями отладчика (фактически, большая часть возможностей пакета инструментов отладки реализована именно таким образом).SDK поставляется вместе с отладчиком, поэтому легко определить, нужен ли он вам.
Другие советы
Ты можешь сказать du
или da
иметь это дамп памяти как строки Unicode или ascii.