Pergunta

Eu li através dos docs e usou os comandos descritos no entanto, por algum motivo eu não parecem estar ficando quaisquer símbolos, apenas uma série de "desconhecidos" na coluna função da tabela de resumo para tudo, exceto o conjunto de nível superior do aplicativo Eu estava tentando depurar .... eu definir a variável ambiental para o servidor Microsoft e os direcories containg APO é para o aplicativo. Eu também fez questão de selecionar os "Símbolos de carga" item antes de trazer a tabela de resumo.

Arcording às informações que eu estava lendo isso deve levar algum tempo para o tabl a tela enquanto ele carrega os símbolos, no entanto, para mim, a tabela exibida quase instantaneamente e apenas o topo a maioria dos itens em sprite.exe-> sprite.exe estiveste nomes de função, as linhas othe para a função foram em branco ou "desconhecido"

Im usando o Vista SP1.

Este é o arquivo de lote que eu usei. Eu fiz tudo o que impediria os sybols sendo carregado?

REM start profiler
xperf -on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE^
 -stackwalk profile -minbuffers 16 -maxbuffers 1024 -flushtimer 0^
 -f tmp.etl
REM run the app we want to profile
sprite.exe
REM stop
xperf -d profile.etl
REM set symbol path
set _NT_SYMBOL_PATH = ^
 C:\Projects\C++\fl lib\bin;^ REM dlls
 C:\Projects\C++\fl lib\samples\bin;^ REM main exe
 SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
REM display profile
xperf profile.etl
Foi útil?

Solução

Qual versão do dbghelp.dll é que usando? Eu tive problemas para obter símbolos PDB trabalhar com kernrate e outros utilitários quando se utiliza a versão do dbghelp.dll que está instalado no %SystemRoot%\system32.

Você pode precisar copiar dbghelp.dll e symsrv.dll a partir de uma versão recente do Debugging Tools for Windows em um diretório onde XPerf pode encontrá-lo.

Além disso, você precisa remover o espaço antes do '=', ou então você está definindo a variável "_NT_SYMBOL_PATH" (incluindo o espaço à direita no nome).

Incluindo comentários no final de uma linha não vai funcionar. Um caractere de continuação de linha, como '^' normalmente precisa ser o último caractere na linha. Quando eu corri essa afirmação (no XP), acabei com "_NT_SYMBOL_PATH" igual a "C:\Projects\C++\fl lib\bin; REM dlls" e um erro sobre a próxima linha.

Outras dicas

Tente configurar a

TRACE_FORMAT_SEARCH_PATH

variável de ambiente. Se isso não funcionar, você pode ter que extrair manualmente os arquivos TMF de seus PDBs usando TracePdb.exe (ou pelo menos usar um caminho regular em vez de um SYM * path). Esta é de longe a parte mais chata de usar traços de ETL / XPerf

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top