2010-09-17 16 views
6

Acabo de crear mi aplicación que consiste en algún código C++ y C# y lo instalé en otra máquina. Cuando conecto el depurador remoto, puedo depurar el código de C++, y paso a paso. Sin embargo, cuando trato de depurar el código C#, los símbolos no parecen estar cargados. Intenté abrir el panel de módulos en Visual Studio y busqué en el archivo .pdb correcto, pero acabo de recibir un mensaje que me dice que no coincide.¿Por qué mis símbolos (pdb) no se cargan desde una ruta local?

No puedo entender por qué sucede esto. He usado chkmatch desde aquí: http://www.debuginfo.com/tools/chkmatch.html, que informa que los archivos .exe y .pdb que estoy seleccionando sí coinciden.

He limpiado toda mi fuente, he ido a buscar y reconstruido todo, así que estoy bastante seguro de que no tengo un viejo error al acechar .pdbs.

He encontrado esta pregunta relacionada The Symbol file MyFile.pdb does not match the module Pero, eso es más para hacer símbolos nativos que no coincidan. Mis símbolos nativos coinciden, son solo ensamblajes .net donde los símbolos se niegan a coincidir.

Cualquier sugerencia para cosas para comprobar sería muy bienvenida.

Gracias.

Actualización: ¡He logrado obtener los símbolos para cargar ahora! Pero ... la solución fue copiar los archivos de símbolos en la computadora remota y colocarlos en la misma carpeta que los archivos .exe y dll en la máquina remota. Visual Studio parece negarse a cargarlos desde mi máquina local. Si hago clic derecho en el módulo en la ventana de módulos y selecciono 'Información de carga de símbolo ...', esto muestra las rutas de donde está tratando de cargar los símbolos, y esto contiene las rutas locales correctas a donde los archivos pdb están en mi máquina. He examinado las propiedades de control de acceso y seguridad para los pdbs, y he dado todos los permisos de acceso a todos.

Esto es realmente confuso, estoy seguro de que en el pasado he podido cargar símbolos bien. No puedo pensar en nada que haya cambiado que de repente haga que esto deje de funcionar.

¿Por qué Visual Studio se niega a cargar el símbolo desde mi máquina local?

+0

¿Cómo se firman los archivos? –

+0

Usando signtool.exe desde el SDK.signtool sign/v/ph/f "myCertfile.pfx"/p myCertfilePassword/t "http://timestamp.verisign.com/scripts.timestamp.dll" MyExeToSign.exe –

+0

Voy a tratar de deshabilitar la firma y volver a empezar de nuevo para ver qué pasa entonces. –

Respuesta

8

Esto es todo. Los PDB para la depuración remota de .NET siempre se cargan desde la máquina remota. En el pasado, debo haber estado copiando pdb en la máquina remota, pero me olvidé de ello.

http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/26/visual-studio-remote-debugging-and-pdb-files.aspx


Ah. Sé por qué no he tenido que acordarme de hacer la copia de los pdb en la máquina remota por un tiempo. Tenía una asignación de carpeta de red configurada en la máquina remota que asignaba una unidad a mi máquina local ... y esto se usaba para resolver la ruta. Tengo una unidad local S: donde guardo todo mi código fuente, y resultó ser un mapeo de red que para conducir S: en la máquina remota para que todo estuviera funcionando. Creo que volveré a agregar esa asignación, y luego puedo depurar sin tener que copiar manualmente los pdb.

Parece un truco útil para el código administrado de depuración remota. ¡Simplemente no me había dado cuenta de que lo estaba haciendo!

Cuestiones relacionadas