2009-11-23 9 views
8

C++:stringhe di impostazione nel gdb

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

quando il debug in gdb:

(gdb) set var a = "ok"
valido gettato

corro il programma e pausa in un punto di interruzione dopo che la stringa a è stata inizializzata. Sto cercando di impostare il suo valore, ma si lamenta del cast non valido. Qual è la sintassi corretta per questo?

+2

"impostazione" una stringa è un'operazione complessa non necessariamente supportata da gdb. – bmargulies

+0

ok ... così puoi impostare le variabili int usando gdb, ma non le stringhe? Sono confuso perché l'impostazione delle stringhe non sembra molto più complessa dell'impostazione e so che questo funziona: int main() { int b = 9; (gdb) set var b = 8 // non si lamenta "impostazione" è il termine corretto per ciò che sto cercando di fare, giusto? – anoda9

+2

"l'impostazione delle stringhe non sembra molto più complessa dell'impostazione di input" - beh, lo è. –

risposta

16

Si può fare questo:

call a.assign("ok") 

In questo modo, gdb sa subito che ha bisogno di chiamare una funzione (piuttosto che quello che si è tentato con operator=), sa quale funzione chiamare (std::string::assign), e non ha bisogno di convertire i tipi (poiché c'è un sovraccarico di assign che corrisponde esattamente).