По доброй традиции отвечу себе сам
Немного предыстории:
Захотелось мне при отладке смотреть дампы разных не стандартных объектов. Я (после дельфи) попробовал написать функцию для преобразования нужного мне объекта в строку, чтобы затем в watch вызывать ее и параметром передавать объект и смотреть его дамп в виде строки. Но отладчик меня жутко обломал, написав <not in scope>.
После большого количества танцев с бубном, выяснил, что все-таки в watch вычисляется результат любых выражений, даже вызовы функций с параметрами. Но возвращать сложные типы, такие как std::string, бессмысленно, т.к., видимо, возвращаемый объект освобождается еще до того как qtcreator попытается его отобразить.В итоге получается <not in scope>.
Я вышел из ситуации таким образом:
Написал специальный класс строка, тело которого статический массив на, например, 100 символов. И дамп-функция заполняет и возвращает именно его. Т.к. тело объект статично и деструктор его не разрушает, то в отладчике все отлично отображается.
Вот вырезка кода:
namespace debughelp
{
static const int string_size = 100;
class string
{
public:
string(const char*);
char* info;
char data[string_size];
};
}
debughelp::string __showhex(void* buf, int sz);
PS. Надеюсь мои изыскания помогут другим в отладке. Интересно выслушать критику...