2009-04-08 16 views
10

Es bastante fácil encontrar todas sus dependencias externas. Simplemente ejecute el programa y abra la ventana de información de Módulos. ¿Pero cómo puedo encontrar todas mis dependencias internas? Sé que el programa mantiene una lista de todas las unidades, porque he rastreado mi camino a través del código de inicialización una o dos veces. Pero, ¿hay alguna manera fácil de acceder a esta lista desde el depurador?¿Cómo puedo encontrar todas las unidades en mi aplicación Delphi?

Respuesta

4

¿Ha mirado Pascal Analyzer o la versión limitada gratuita, Icarus, desde Peganza Software? Ellos crearán "informes de usos" que le indicarán qué módulo usa lo que otros, de modo que deberían proporcionarle la información que busca.

Marc

3

Sé de al menos dos maneras en que podría tratar de conseguir una vista de todas las unidades utilizadas en su proyecto

  1. CTRL-SHIFT-B abre el explorador de objetos. Si no me equivoco, aquí puedes obtener una vista de las unidades usadas. No estoy del todo seguro sobre este método y no tengo Delphi disponible para verificarlo.
  2. Utilice Modelmaker; Modelmaker puede darle una vista de árbol de todas las dependencias de su unidad. Mire la sección Visualizing existing code para más información.
4

GExperts tiene una herramienta Dependencias del proyecto. Lo he usado antes cuando intento rastrear unidades usadas. No puede buscar en él, pero puede exportar la lista a un archivo CSV y buscar allí. Esto también solo enumera lo que está en la sección de usos. Si tiene un módulo incluido que no se está utilizando, seguirá apareciendo.

6

Uso el GExperts Dependencias del proyecto.
Con el "Used By ...", puede ver unidades incluidas pero no utilizadas por nadie. Pero no puede ver la unidad incluida en las cláusulas de uso que podrían eliminarse cuando no tienen ningún código realmente llamado.

Aquí está la ayuda:


Dependencias del proyecto experto dependencia

El proyecto le permite ver lo que las unidades utiliza una unidad particular, ya su vez qué unidades utilizar una unidad en particular. Cuando este experto se activa, analiza todo el código fuente del proyecto actual para cláusulas de uso y crea una lista de dependencias. Para ver la información de dependencia de una unidad en particular, haga clic en ella en el panel izquierdo. El panel derecho contendrá la información de dependencia. Las dependencias indirectas son unidades que son usadas por unidades usadas de una unidad en particular.

Puede actualizar la información de dependencia en cualquier momento haciendo clic en el botón Actualizar en la barra de herramientas y puede ordenar la lista de archivos haciendo clic en los encabezados de las columnas.
alt text http://www.gexperts.org/tour/project%20dependencies.png


otoh, también se pueden utilizar de Peganza's ICARUS como una herramienta de información más detallada, pero menos interactivo ...

1

La forma más fácil es compilar el programa y comprobar qué .dcu fue creado por el compilador. Asegúrese de configurar el compilador para crear .dcu en un directorio separado, por ejemplo c:\dcu. He creado una utilidad simple que busca .pas para cada archivo .dcu en directorios que están en una ruta de búsqueda del compilador (que se puede leer en el archivo .cfg, .dof o .bdsproject).

25

El depurador Delphi puede mostrar qué unidades se compilaron en un módulo (exe, dll o paquete). Puede ver esto en la vista de Módulos (Ver | Depurar Windows | Módulos). Haga clic en un módulo en el panel superior izquierdo, y el panel inferior izquierdo mostrará todas las unidades de compilación integradas en ese módulo. Si una unidad de compilación en particular se compone de varios archivos de origen (es decir, un archivo .pas y un archivo .inc), también se mostrará (cuando expanda la unidad de compilación).

Como alternativa, puede hacer que el compilador de Delphi le muestre una lista de los archivos .dcus pasados ​​--depende al compilar un proyecto. Emitirá un archivo .d con una lista de los archivos .dcus (y .dcps) necesarios.

+5

Aprendí algo nuevo hoy: '--depends' :) Siempre limpié el directorio .dcu, luego hice un' dir/b' del directorio .dcu después de una compilación. ¡El truco del depurador también está limpio! –

+1

¿Qué versiones del compilador conocen sobre el interruptor --depende? – dummzeuch

+0

Siempre podría usar un poco más de cerebro :-) Gracias por esta increíble respuesta. –

1

Puede usar un archivo MAP junto con MapFileStats, esto no solo le proporcionará todas sus dependencias, sino también la cantidad de código (y recursos) que aportarán en el ejecutable final.

Útil para detectar unidades de las que tiene dependencias, pero utiliza poca cantidad, así como para detectar unidades de "cerdo gordo", que llevan todo junto con el fregadero de la cocina.

FWIW, la reducción de las dependencias y la eliminación de cerdos no solo es beneficiosa para el tamaño del ejecutable, también es beneficioso en el futuro cuando sea el momento de actualizar a una nueva versión.

Cuestiones relacionadas