Como todavía no hay respuestas para su pregunta, permítame describir un hack que yo mismo usaría. Esperemos que atraiga la atención a la pregunta para otras respuestas. Yo mismo soy un usuario de Linux, pero siga leyendo hay algunos punteros de Windows una vez que haya leído la parte de Linux. Sin embargo, primero navega por el párrafo de Linux.
Como una solución genérica para este problema, aquí es cómo trataría de averiguar qué archivos son necesarios:
Linux
En Linux ejecutaría el programa desde la línea de comandos de la siguiente manera:
strace -fe trace=file programUnderTest > /tmp/logfile 2>&1
El programa strace
está rastreando todas las llamadas del sistema ejecutadas por programUnderTest
. Filtra los eventos file
y el indicador -f
indica que también debe seguir los procesos secundarios. La salida se guarda en /tmp/logfile
Muy importante, genere todo el proyecto mientras se registra. También después de crear el proyecto, guárdelo con un nombre de archivo único; esto actuará como un marcador en el registro, luego saldrá del programa. El contenido del archivo de registro se ve así:
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/dev/tty", O_RDWR|O_NONBLOCK) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3
stat(".", {st_mode=S_IFDIR|0700, st_size=15104, ...}) = 0
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
Process 3207 attached
[pid 3207] stat(".", {st_mode=S_IFDIR|0700, st_size=15104, ...}) = 0
[pid 3207] stat("/usr/lib/lightdm/lightdm/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
[pid 3207] stat("/usr/local/sbin/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
[pid 3207] stat("/usr/local/bin/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
[pid 3207] stat("/usr/sbin/id", 0x7fff6fee1840) = -1 ENOENT (No such file or directory)
...
Personalmente, me gusta usar vi si es un trabajo de una sola vez para buscar en los datos.
Encuentre la primera aparición de su archivo de proyecto y elimine todas las líneas antes de eso.
/open(".*theProjectFile # Find first occurrence of the project file being opened
:1,. d # Delete all lines before that marker
Luego busque la primera vez que aparezca el archivo que guardó y elimine todas las líneas después de eso.
/\tmp\/bladibla # Find first occurrence of the project file being saved
:.,$ d # Delete all lines after that marker
Estos son comandos de ejemplo para limpiar los datos restantes:
:1,$ ! grep '"' # Filter lines that contain a string in quotes, a "filename"
:1,$ s/^[^"]*"// # Remove leading characters for each line
:1,$ s/".*$// # Remove trailing characters for each line
:1,$ ! sort -u # Sort the file names, listing every occurrence once
A continuación, se sorprenderá de qué archivos se han probado / accedido realmente ...: archivos de dispositivo, fuentes, archivos de configuración del sistema global, ... y los archivos reales en los que está interesado se encuentran entre ellos ... bibliotecas, fuente Archivos, archivos temporales pero también ejecutables. Si conoce un nombre de directorio donde residen sus archivos, puede buscar ese directorio y filtrarlo.
Windows
Al trabajar en Windows, el concepto sería el mismo, pero el sistema por defecto carecerá de las herramientas que son bastante estándar en Linux. No soy un usuario de Windows, por lo que no he probado ninguna de las herramientas a continuación, pero parece que:
-
Moo0 FileMonitor
parece hacer el trabajo que estás buscando, pero es probable que haya otras opciones también si busca en Internet.
- En una nota al margen, cygwin puede proporcionarle las potentes herramientas de línea de comandos de Linux (
sort
, uniq
, grep
, vi
, ...) como se usó anteriormente para el filtrado.
Un truco astuto sería configurar un servidor SAMBA de Linux (servidor de archivos compatible con Windows) que aloje los archivos de su proyecto y en el que rastree el acceso SAMBA. Luego monte ese recurso compartido en el cuadro de Windows y listo ...