2009-11-23 4 views
8

C++:настройки строки в GDB

int main() 
    { 
    string a = "a"; 
    ... ... 
    } 

, когда я отладки в GDB:

(GDB) множество вар а = "нормально"
Invalid отбрасываемой

Я бегу программа и пауза в точке останова после инициализации строки a. Я пытаюсь установить его значение, но он жалуется на недопустимый актерский состав. Каков правильный синтаксис для этого?

+2

«установка» строки - сложная операция, не обязательно поддерживаемая gdb. – bmargulies

+0

ok ... , так что вы можете установить переменные int с помощью gdb, но не строки? Я запутался, потому что установка строк не выглядит намного сложнее, чем установка ints, и я знаю, что это работает: int main() {int b = 9; } (gdb) set var b = 8 // не жалуется «настройка» - правильный термин для того, что я пытаюсь сделать, не так ли? – anoda9

+2

"установочные строки не кажутся намного сложнее, чем установка ints" - ну, это так. –

ответ

16

Вы можете сделать это:

call a.assign("ok") 

Таким образом, GDB знает сразу, что для этого нужно вызвать функцию (а не то, что вы пытались использовать operator=), он знает, что вызываемая функция (std::string::assign), и вообще не нужно конвертировать типы (поскольку есть перегрузка assign, которая точно соответствует).