2011-07-31 15 views
7

tengo una clase tiene este aspecto:Definir punto de corte para la función de miembro de la clase no tiene éxito

namespace madoka 
{ 
class polarizable_sites 
{ 
public: 
void resize(const size_t dim_); 
void clear(void); 
}; 
} 

en GDB, pude establecer punto de interrupción en claro por

b 'madoka::polarizable_sites::clear()' 

sin embargo, para la función de cambio de tamaño miembro, a

b 'madoka::polarizable_sites::resize(const size_t)' 

no funciona. BGF informó de error:

the class madoka::polarizable_sites does not have any method named resize(const size_t) Hint: try 'madoka::polarizable_sites::resize(const size_t)' or 'madoka::polarizable_sites::resize(const size_t)' (Note leading single quote.)

Me pregunto por qué ya que el estilo de la función es completado por auto-TAB.

Por cierto: estoy usando GDB

GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc.

con el compilador '

g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 Copyright (C) 2010 Free Software Foundation, Inc.

+1

siempre se puede usar el archivo: linenumber. –

+0

@yi_H bien, sería mucho mejor usar el nombre de la función ya que el número de lienzo podría cambiar si cambio el código fuente y será algo difícil de rastrear. – xis

+0

Soy consciente de esto, es solo una solución –

Respuesta

3

Probablemente la función esté en línea. Intente agregar __asm int 3 si es un código x86 en sintaxis GDB y recorra el código. Este truco me ha ahorrado mucho tiempo al depurar código MSVC x86.

+0

esto es gcc, no es necesario hackear;) –

+2

Esto podría funcionar en GCC 'asm (" int $ 0x3 ");' Recuerde que este punto de interrupción se compilará y solo se debe utilizar si no se puede romper código en línea u otro optimizado. Causará cambios en el código y puede mostrar/ocultar Heisenbugs. – Coder

0

supongo que el compilador ha despojado el especificador const,

Try b' Madoka :: polarizable_sites :: resize (size_t) '

+0

No, no funciona. – xis

Cuestiones relacionadas