visual studio proyectos proyecto programa portable net los hacer guardar guardan generar finalizar exportar ejecutable donde crear como vb6

vb6 - proyectos - guardar programa visual studio



Vb 6 Haga que los resultados de.exe sean diferentes para depurar (4)

Debug.Assert y Debug.Print Statement no se compilan en el binario. A veces uso esto para detectar si estoy en el IDE o en un binario compilado:

On Error Resume Next Debug.Print 1/0 If Err=0 then ''Compiled Binary else ''in the IDE End if

Tenga cuidado con declaraciones como esta:

Debug.Assert( DoSomeThingImportend() )

En la versión compilada, esta declaración no se ejecutará.

Estoy comparando los resultados producidos cuando uso ''Make .exe'' en comparación con cuando ejecuto exactamente el mismo proceso usando exactamente las mismas variables a través del depurador IDE vb 6.

He intentado una variedad de opciones de compilación diferentes, pero fue en vano.

Entonces mi pregunta es por qué obtendría una diferencia entre el depurador y el ''Make .exe''? ¿Alguna vez has venido por algo similar y si es así encontraste una solución?

el programa toma un gran archivo de conteos de autos en un período de tiempo y los promedia en periodos de tiempo de 15 minutos por día durante un mes para cada ruta. Elimina ciertos registros según si hay fuera de la desviación estándar y otros algoritmos estadísticos Para eliminar valores. es un poco demasiado código para publicar, lamentablemente ...


He descubierto que en algunos casos (muy raros), puede haber diferencias en el código compilado y de depuración para VB6.

Podría valer la pena probar la opción ''Compilar a código P'': a veces esto da resultados ligeramente diferentes del código nativo. Lo encontrará en la pestaña Propiedades del proyecto / Compilar.

Es posible que si publiques tu algoritmo, podamos encontrar más posibilidades.

Editar: Como no puedes publicar el algoritmo, te sugiero dividir el algoritmo progresivamente e intentar determinar dónde están exactamente las diferencias.


VB 6 es bastante sólido cuando se trata de consistencia de compilación. Pero una posibilidad podría ser si confías de alguna manera en los eventos y usas doevents para ceder.

Esa combinación puede comportarse de manera bastante diferente en el IDE frente al código compilado.

Supongo que no lo eres, pero, oye, algo para comprobar.


la mayoría de las veces las diferencias entre una versión depurada provienen de problemas de sincronización, la versión de depuración es un poco más lenta y puede pasar por alto algunos valores inicializados, o no espera lo suficiente para que se complete otra parte del proceso

Puede probar esto agregando algunas pausas entre las distintas partes del código. A menudo, un DoEvent extra logra el truco, o deja aparecer algunos mensajes de texto (luego puede comparar los resultados intermedios de la versión compilada con la versión de depuración)

Intente descubrir qué parte del cálculo arroja el resultado incorrecto y separe esa parte en una función separada

a menudo, la diferencia ocurre directamente al inicio (sin inicialización de tiempo), o en algún lugar durante el proceso hasta el final (atrasándose en otro proceso)