При отладке у меня есть адрес в памяти и я знаю тип объекта, который находится по этому адресу, и я хочу, чтобы отладчик отображал этот экземпляр объекта. Это можно сделать с помощью команды печати для типов, которые не являются шаблонами, но, по-видимому, не работает для типов, которые являются экземпляром шаблона.
См. этот пример кода:
template<typename T>
class X
{
public:
X() {
printf("a\n");
}
};
class Y
{
public:
Y() {
printf("a\n");
}
};
int main(void)
{
X<int> x;
Y y;
return 1;
}
когда я запускаю программу, ломаюсь в main и пытаюсь интерпретировать случайный действительный адрес в указатели на объекты X и Y, первый терпит неудачу:
(lldb) p *(Y*)0x0000000100000ee6
(Y) $0 = {}
(lldb) p *(X<int>*)0x0000000100000ee6
warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.
error: use of undeclared identifier 'X'
error: expected '(' for function-style cast or type construction
error: expected expression
Есть ли способ сделать это в lldb? (изменить: Mac OS X lldb-360.1.65 и lldb-310.2.37)