Подтвердить что ты не робот

Как проверить std::string в GDB без исходного кода?

Я пытаюсь отлаживать программу, которая не имеет исходного кода, и мне нужно посмотреть, что она хранила в std::string. Я был Googling и смотрел здесь, и я нашел некоторую информацию о выводе контейнеров STL, но все это относится к переменным, без исходной или отладочной информации, все, что у меня есть, - это смещение памяти данных класса. Есть ли способ сделать это?

4b9b3361

Ответ 1

Каждая реализация std::string имеет указатель на необработанные символы в ней где-то. Для g++ 4.x этот указатель находится в смещении 0 в строку.

Если вы знаете, что строка находится, например, 0x7fffffffda88, то

print *(char**)0x7fffffffda88

- это то, что вам нужно.

Ответ 2

Возможно, самым простым вариантом является использование метода c_str, как в:

print myStr.c_str()