2012-03-08 13 views
5

Quiero ser capaz de especificar un subconjunto de todas las excepciones de C++ para Xcode (lldb) para romper. Parece que este es compatible con la interfaz de usuario:¿Qué me estoy perdiendo sobre los puntos de excepción de C++ en Xcode 4.3?

ScreenShot

Pero para la vida de mí, no puede hacer que funcione. Si lo dejo configurado en la opción predeterminada "Todas las excepciones de C++", funciona y cada excepción que se lanza desencadena el punto de interrupción. Si intento especificar una excepción por nombre, el punto de interrupción es nunca activado.

¿Alguien más ha tenido problemas con esto, o este es solo mi problema?

Respuesta

3

A pesar de la IU, lldb no puede establecer puntos de interrupción en excepciones específicas de C++ o no resuelve el nombre correctamente.

puse un punto de interrupción para std::underflow_error y luego usando el comando lldb breakpoint list, determinó que sólo se coloca un punto de ruptura simbólica en std::underflow_error:

9: name = 'std::underflow_error', locations = 0 (pending)

Sospecho que nunca se resuelve LLDB std::underflow_error al constructor. El cambio de nombre de C++ podría tener algo que ver con eso también.

Si crea un punto de interrupción para todos a excepción de C++, verá que crea un punto de ruptura simbólica en __cxa_throw:

10: name = '__cxa_throw', locations = 1, resolved = 1 

    10.1: where = libc++abi.dylib`__cxa_throw, address = 0x01cefa44, resolved, hit count = 0 

que podría ser capaz de poner un punto de interrupción en el constructor de la excepción le interesa , suponiendo que se crea una instancia y se lanza en el mismo punto.

Cuestiones relacionadas