Pregunta

Estoy tratando de uso xperf al perfil my DLL, pero se niega a usar el archivo PDB de mi DLL. Correr xperf en el .etl con símbolos-, me sale:

DBGHELP: mydll- private symbols & lines
         C:\mydll\debugu\mydll.pdb - unmatched

Lo que me lleva a creer que piensa que mi AP no coincide con el archivo DLL de la aplicación está utilizando. Esto está mal; que no coincide. He confirmado la ruta de la DLL de la aplicación es la vinculación con el uso de procexp, completamente reconstruido el proyecto, y así sucesivamente. Todavía piensa que no coincide.

¿Alguna idea sobre lo que podría estar mal?

¿Fue útil?

Solución 2

Lo siento, me hizo esta pregunta y se olvidó de él.

En realidad hubo dos problemas.

La primera es que xperf fue en realidad el uso de una versión en caché antigua de mis símbolos. Esto fue corregido eliminándolo del símbolo de caché.

El segundo fue que cuando me cargan símbolos en xperfview, que en realidad no poner mi AP-arriba-hasta la fecha en la caché de símbolos. El AP en un directorio que confirmé fue incluido en la variable _NT_SYMBOL_PATH, sin embargo. Por desgracia, no me acuerdo exactamente el comando utilizado para solucionar este problema, pero creo que fue un ' xperf file.etl símbolos-' variante. Este comando analiza correctamente la carga ETL y / caché todos los símbolos pertinentes, ya que los encontró. Después de esto, xperfview podría mostrar correctamente mis símbolos.

Tenga en cuenta que tenía que volver a ejecutar el comando en cualquier momento mi AP cambió, porque xperfview TODAVÍA no toque nada que no estuviera ya en el símbolo de la memoria caché. Todavía no estoy seguro de por qué se comporta de esta manera en mi máquina, no parecen a otras personas a tener este problema.

Otros consejos

Trate de establecer una variable de entorno del sistema _NT_SYMBOL_PATH a punto a su _NT_SYMCACHE_PATH archivo .pdb a punto de c: \ Symbols. Consulte la documentación sobre el manejo XPerf símbolo en http: // MSDN .microsoft.com / es-ES / biblioteca / ff191023 (VS.85) .aspx

También hay un artículo de buen blog titulado "Bajo las sábanas con XPerf" en WindowsItPro punto com que las cubiertas símbolo de entrega de XPerf.

Tenga en cuenta que necesitaba para establecer una variable de entorno del sistema con los valores correctos, establecer el entorno en un archivo por lotes no fue recogido por xperfview (marque Trace, opción de menú Configurar Ruta símbolo inmediatamente después de comenzar XPerfView)

Me acaba de publicar un respuesta a una pregunta similar sobre lo que podría estar relacionado con el problema experimentado aquí ...

Básicamente, si el DLL se carga dinámicamente, puede causar problemas para XPerf con respecto a símbolo de carga.

En lo personal, estoy adivinanzas se trata de lógica dentro XPerf decidir si incluso a tratar para cargar símbolos para un módulo dado. p.ej. "Cargar todas sus entradas IAT de EXE y" (que sería omitir toda dinámico DLL - que no parece ser el caso, pero algo similar está sucediendo)

EDIT:

Recientemente he discutido esto con un colega, y aprendió que XPerf será adecuadamente "decidir" a los símbolos de carga de DLL cargadas mediante programación ... si la DLL permanece cargado hasta la terminación del proceso.

Por lo tanto, para DLL que se cargan y sin carga durante la ejecución, y se descargan en la terminación ... XPerf omitirá el intento de cargar esos símbolos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top