No hace caso a los puntos de interrupción en Delphi Berlin
Hola a tod@s.
Estoy intentando pasar un pequeño proyecto desde delphi 2007 a Delphi Berlin y, aparte de otros problemas que tengo que resolver, estoy viendo un comportamiento extraño relacionado con los "breakpoints" y es que, cuando quiere, no les hace caso. Hay veces que pongo alguno en alguna parte del código y se lo salta a la torera, o sea, que no se para. Sin embargo, si antes pongo un showmessage para probar si pasa por ahí, hace el showmessage y luego se para en el breakpoint. ¿Alguien me da algo de luz sobre este asunto? Saludos |
Hola...
Podría ser que el compilador al optimizar el código elimina la línea de código donde tienes el break point y es por eso que al hacer el debug ya no se detiene ahí. Me llegó a pasar. Saludos... |
Cita:
Saludos |
Ese comportamiento es así, de siempre, en todas las versiones de delphi.
|
cuando pones el showmessage si se detiene la ejecucion o solo el programa se queda en espera?
Y por pura casualidad, se tienen dos modos de ejecucion (hay dos botones de play), a cual le estas dando? Saludos. |
1. Abri el archivo de codigo fuente (.pas) en algun editor de texto (ej Notepad++)
2. Converti los "fin de linea" (si, asi les digo yo) a formato UNIX (CR) 3. Converti los "fin de linea" a formato Windows/MS-DOS (CRLF) 4. Elimina los dcu de tu proyecto 5. Build all (Shift+F9) 6. Intenta depurar Los pasos 2 y 3 hacelos aunque el Notepadd++ te marque que el fin de linea este en formato Windows. Tambien es sano revisar que el encoding del archivo (no recuerdo cual era el bueno para el editor de Delphi, mis archivos .pas estan en ANSI) Testimonios :D https://plus.google.com/+MarcoCirinei/posts/HYkiV1dgyvE https://plus.google.com/+MarcoCirinei/posts/5Jg7i2Ksiay |
Para debuguear yo uso CodeSite, me resulta mucho mas practico que estar usando breakpoints...
|
A veces ayuda utilizar la opción "Clean" antes del "Build" del proyecto.
Otra recomendación (al menos yo lo uso) es utilizar OutputDebugString en lugar de los ShowMessage ayudándonos luego de una herramienta como DebugView de SysInternals. Hay otras similares. |
Cita:
|
Gracias a todos por vuestros comentarios.
He editado con notepad y guardado (por si acaso) el .pas, he borrado el .dcu, le he dado a Build y nada. Pero no sé si me he explicado correctamente, lo único que quiero es que si pongo un punto de interrupción (de los de toda la vida) se pare y no lo hace. Sólo lo hace si antes pongo un showmessage o un application.processmessage y eso no lo veo normal. No sé, igual es algo de configuración y por eso preguntaba pero no me gustaría en principio tener que echar mano de otras herramientas porque no las echo en falta ahora mismo. Saludos |
Cita:
Cita:
Cita:
|
Cita:
|
Cita:
Si pones un showmessage después entonces él piensa "pues sí sirve", así que se detiene en el breakpoint. |
Cita:
|
Mí comentario anterior es por un problema que me jodió un tiempo, que provocaba un desfase entre el número de línea de código "a la vista" y el número que ve el compilador y el depurador. Entonces al marcar una línea con un breakpoint en realidad marcas otra o incluso a veces nada
Por casualidad es código compilado en línea? (Es decir, con la directiva "inline"). El código en línea puede ser muy difícil de depurar Quizá haya un problema en las opciones del proyecto (estas compilando bajo la configuración Debug?) Cuando pones el breakpoint, resalta en verde la línea de código? Si es el caso tiene razón Casimiro, tú código fue eliminado del ejecutable |
Cita:
|
|
Hola de nuevo.
He modificado el parámetro Project-Options-Delphi Compiler-Compiling-Optimization a "false", estaba a "true" y ahora si que se para donde le marco. Gracias a todos. |
Cita:
|
Cita:
|
La franja horaria es GMT +2. Ahora son las 01:12:16. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi