2010-05-14 24 views
6

Estoy modificando nuestros componentes VCL para que la aplicación del usuario final se vincule a nuestros archivos dcu, en lugar de construir nuestro código fuente cada vez. Tenemos todo funcionando, pero quiero que el depurador se detenga en el código del usuario cuando se produce una excepción. Al principio se detendría en nuestro dcu y abriría la ventana de la CPU. Pude evitar eso al eliminar la información de depuración de los archivos dcu. Pero ahora todavía no se detiene en el código de los usuarios (como las bibliotecas DevExpress y otros).Corregir el compilador Delphi para detenerse en el código del usuario, no en el componente

El siguiente screencast es un pequeño ejemplo. La primera vez que provoco una excepción en el código DevExpress, y el depurador se detiene correctamente en mi evento de botón. La segunda vez provoco una excepción en mis componentes, pero el depurador no tiene mi evento de botón en la pila de llamadas, y no me muestra dónde estaba el problema. ¿Alguna idea de por qué?

http://screencast.com/t/NjhlOTRk

Actualmente la construcción de la DCU de estas opciones:

-$W+ -$D- -h -w -q 

Actualización: Los métodos TDataSet entre mis componente y el evento de botón parecen causar este comportamiento. Si, en cambio, llamo a un método directo de mi mesa, obtengo el comportamiento esperado. Supongo que no hay nada que pueda hacer al respecto, pero sigo sintiendo curiosidad sobre por qué sucede.

Respuesta

1

Si el código fuente es compilación en lugar de dcu, hay algo mal en la configuración.

El dcus debe estar en la ruta de búsqueda, la fuente en la ruta de exploración.

De esta forma no es posible que el compilador no use las DCU, y aún puede depurar.

0

has necesitado armado/desarmado: Opciones del proyecto -> Delphi compilador -> Compilar -> 'Uso de depuración .dcus' (en la subsección Depuración)

Cuestiones relacionadas