Quando metto a punto all'interno di una funzione con template,di debug ++ modello con gdb
Come faccio a sapere quale modello digitare la funzione corrente sta usando?
Ho provato
p T
. Dice che gdb non può stampare un tipo.Come si interrompe su un tipo di modello particolare?
Diciamo che la funzione
foo<T>(...)
ha 2 possibili moduli,foo<int>(...)
efoo<long>(...)
. Come faccio a impostare un breakpoint in modo che gdb si interrompa solo sul primo che utilizzaint
, ma non il secondo che utilizzalong
?
Edit: Sarebbe bello se il punto di interruzione può essere impostato dal numero di linea. Ci sono molte buone ragioni per questo, ad es. la parte iniziale della funzione può richiede molto tempo per l'esecuzione, il luogo desidero di debug può essere all'interno di un if
dichiarazione ecc
Oggi ho fatto questo lavoro, sono abbastanza sicuro che "b foo' funzionerà ... Se si esegue "b foo.cpp: 123' (supponendo che la riga 123 sia la linea di" pippo " imposta più punti di interruzione per tutte le varianti di modello –
L'istanza del modello che si è presente deve essere visibile nel backtrace –
http://stackoverflow.com/questions/1666963/debugging-templates-with-gdb –