Puede leer la información del archivo .pdb y evaluarlo usted mismo. Contiene toda la información que necesita. No he terminado de leer el código, pero mi entendimiento es la siguiente:
- Se obtiene el token de metadatos del método en cuestión a través de la reflexión
- consultar los datos de AP para esa señal
- La AP entrada contiene el nombre del archivo de origen y el número de línea
Un token de metadatos es un número de 32 bits que consta de un tipo de byte y un número de serie. Ese token describe cada entidad individual en un archivo de ensamblaje .NET: tipos, tipo de referencias, métodos, campos, etc. Ese número vale más que el espacio de nombre completo, el tipo, el nombre del método y la firma de un método, y es más fácil de manejar. Pero tenga en cuenta que es generado por el compilador y puede ser diferente en cada compilación, por lo que siempre necesita el archivo .pdb de la misma compilación.
El archivo pdb contiene entradas sobre qué compensación de IL en qué método proviene de la ubicación de origen. Si no tiene un StackFrame sino solo un método, probablemente encontrará varias entradas sobre el método para que pueda usar el que tiene el desplazamiento más pequeño o describir el rango completo en el código fuente que define el método.
Éstos son algunos enlaces para ampliar la lectura, el término de búsqueda es "pdb2xml", que es un viejo ejemplo de código de Microsoft:
Desde la API .NET para leer los archivos .pdb es necesario tener los archivos de ensamblado disponibles, esta conversión se debe hacer directamente después de la construcción para mantener el archivo XML generado realmente portátil.
Estoy construyendo este método en mi solución de registro de .NET, FieldLog, para permitir la resolución de la ubicación de origen de los registros de bloqueo de las compilaciones de lanzamiento, y para desactivar las trazas de pila de los ensamblajes ofuscados.
Muchas gracias, tiene sentido. Ah bueno :) –