2009-11-23 10 views
8

C++:cadenas de ajuste en GDB

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

cuando depurar en GDB:

(BGF) conjunto var a = "ok"
no válida fundido

corro el programa y la pausa en un punto de quiebre después de la cadena a se ha inicializado. Estoy intentando establecer su valor, pero se queja de un lanzamiento no válido. ¿Cuál es la sintaxis adecuada para esto?

+2

"establecer" una cadena es una operación compleja que necesariamente no es compatible con gdb. – bmargulies

+0

ok ... para que pueda establecer variables int utilizando gdb, pero no cadenas? Estoy confundido porque la configuración de cadenas no parece mucho más compleja que la configuración de ints, y sé que esto funciona: int main() { int b = 9; } (gdb) set var b = 8 // no se queja "configuración" es el término correcto para lo que estoy tratando de hacer, ¿no? – anoda9

+2

"establecer cadenas no parece mucho más complejo que configurar ints" - bueno, lo es. –

Respuesta

16

Usted puede hacer esto:

call a.assign("ok") 

De esta manera, el BGF sabe de inmediato que tiene que llamar a una función (en lugar de lo que ha intentado utilizar operator=), se sabe cuál es la función de llamar (std::string::assign), y no necesita convertir tipos (ya que hay una sobrecarga de assign que coincide exactamente).