¿Cómo puedo incluir números de línea en un seguimiento de stack sin un pdb?

Actualmente, estamos distribuyendo una aplicación WinForms sin archivos .pdb para ahorrar espacio en máquinas cliente y descargar ancho de banda. Cuando tenemos rastros de stack, obtenemos nombres de métodos pero no números de línea. ¿Hay alguna manera de obtener los números de línea sin recurrir a la distribución de los archivos .pdb?

No puede obtener un seguimiento de stack con números de línea directamente desde su aplicación a menos que agrupe el PDB. Sin embargo , si tiene los archivos PDB para la misma versión de la aplicación que envía a sus clientes, y no le molestan las secuencias de comandos ligeras, puede convertir el seguimiento de la stack .NET y los desplazamientos IL en números de línea.

Durante su proceso de comstackción, use el convertidor pdb2xml de Mike Stall , distribuido como parte de su excelente depurador de código administrado MDbg , y guárdelos en un lugar seguro (por ejemplo, control de origen). Cuando obtiene un seguimiento de la stack desde el cliente, puede consultar el desplazamiento IL desde los datos XML para determinar el número de línea relevante. Si tus seguimientos de stack se envían a un sitio web, incluso puedes automatizar la conversión, de modo que los desarrolladores ya estén obteniendo los rastros de stack completamente detallados para cuando los casos lleguen a su bandeja de entrada.

No. Los números de línea son parte de la información de depuración, que solo se almacena en el archivo PDB. Esa es la razón por la cual los archivos PDB existen en primer lugar.

No es la respuesta adecuada para su pregunta, pero tengo una sugerencia. Podría incorporar un mecanismo de registro y obtener estos archivos de registro junto con los rastreos de la stack. Si incluye números de línea en sus mensajes de registro, puede combinar la información de registro con su seguimiento de stack manualmente.

Si no desea ocupar mucho espacio, puede usar archivos de registro de tamaño limitado, de esta manera solo se conservarán los mensajes de registro más recientes.

Usamos la biblioteca log4net para nuestras necesidades de registro, le recomiendo que eche un vistazo.

No no hay. Toda la información necesaria para mapear líneas de IL al archivo fuente original y al número de línea se almacenan dentro del AP. No es posible obtener esa información en el seguimiento de la stack sin el PDB.