2012-09-05 19 views
20

Visual Studio 2010 SP1, compiló la aplicación WCF, lo colocó en un servidor y, por supuesto, recibió un error en la primera ejecución (lo que era nuevo) y apuntó Stack Trace al archivo de registro.¿Por qué Stack Trace muestra mi ruta de archivos de desarrollo?

Es ver el camino a mi entorno de desarrollo. ¿Por qué? ¿Es porque lo implementé como Debug en comparación con Release o hay algo más, o debo ser más cuidadoso con la salida de Stack Traces independientemente?

04/09/2012 03:58:46: Error: Object reference not set to an instance of an object. at App1.Logging.LogMessageToFile(String msg, Boolean isUsingClickOnceApp) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\Logging.cs:line 63 
    at App1.App1Main.ConnectWebService(String description) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\International.cs:line 40 
04/09/2012 03:58:46: Error: Object reference not set to an instance of an object. at App1.App1Main.UpdateActivityLog(String data, String userName, Boolean deleteData, Int64 firstId, Int64 lastId, String changeType) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\App1Main.cs:line 641 

Gracias, -Rob

+1

"Es porque lo implementé como Debug" –

+0

como dijo Amiram, está viendo la ruta de depuración porque está compilada en depuración ... – Chris

+1

posible duplicado de [información de Stacktrace conservando rutas de la fuente original] (http://stackoverflow.com/questions/388470/stacktrace-information-preserving-paths-of-original-source) – Cocowalla

Respuesta

38

Se debe a que copió los archivos .pdb y los ejecutables. El CLR los buscará cuando genere un seguimiento de pila para tratar de proporcionar la mayor cantidad de información posible sobre los marcos de pila en el seguimiento. El .pdb almacena el nombre del archivo fuente y el número de línea.

Se supone que debe implementar la compilación Release de su código. Eso permite optimizaciones que pueden hacer que su código se ejecute mucho más rápido. Todavía puede copiar los archivos .pdb para esa compilación, normalmente tienen esa información de depuración eliminada. Project + Properties, cambie a la configuración Release build, Build, Advanced, "Debug Info". La configuración normal aquí para versiones de lanzamiento es "pdb-only" en lugar de "full". Lo que implica que el archivo fuente y el número de línea no están incluidos. Lo cual tiene sentido, los rastros de pila tienden a ser poco confiables una vez que la fluctuación de fase ha optimizado el código.

+0

@Cocowalla - ambas excelentes respuestas. Gracias chicos por las explicaciones en profundidad. Me doy cuenta de que se supone que debo usar la compilación Release, pero si no usa TFS o cierto ciclo de desarrollo, puede olvidar ese hecho menor. ;-) –

3

Es normal que la ruta del archivo fuente original que se almacenará en el AP (program database) al desplegar archivos en modo de depuración.

Cuestiones relacionadas