Ativando um servidor de processo

O servidor de processo incluído nas Ferramentas de Depuração para Windows é chamado DbgSrv (dbgsrv.exe). Para ativar um servidor de processo, abra uma janela do Prompt de Comando com privilégios elevados (Executar como Administrador) e insira o comando dbgsrv .

Nota Você pode ativar um servidor de processo sem ter privilégios elevados e os clientes de depuração poderão se conectar ao servidor. No entanto, os clientes não poderão descobrir um servidor de processo, a menos que ele tenha sido ativado com privilégios elevados. Para obter informações sobre como descobrir servidores de depuração, consulte Pesquisando servidores de processo.

O DbgSrv dá suporte a vários protocolos de transporte: pipe nomeado (NPIPE), TCP, porta COM, pipe seguro (SPIPE) e SSL (secure sockets layer).

dbgsrv -t npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t spipe:proto=Protocol,{certuser=Cert|machuser=Cert},pipe=PipeName[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

Os parâmetros nos comandos anteriores têm os seguintes valores possíveis:

pipe=PipeName
Quando o protocolo NPIPE ou SPIPE é usado, PipeName é uma cadeia de caracteres que servirá como o nome do pipe. Cada nome de pipe deve identificar um servidor de processo exclusivo. Se você tentar reutilizar um nome de pipe, receberá uma mensagem de erro. PipeName não deve conter espaços ou aspas. PipeName pode incluir um código de formato de estilo printf numérico, como %x ou %d. O servidor de processo substituirá isso pela ID do processo de DbgSrv. Um segundo código desse tipo será substituído pela ID de thread de DbgSrv.

Nota Talvez seja necessário habilitar o compartilhamento de arquivos e impressoras no computador que está executando o servidor de processo. Em Painel de Controle, navegue até Rede e Rede da Internet > e Configurações avançadas de compartilhamento da Central> de Compartilhamento. Selecione Ativar compartilhamento de arquivos e impressoras.

port=Socket
Quando o protocolo TCP ou SSL é usado, Socket é o número da porta do soquete.

Também é possível especificar um intervalo de portas separadas por dois-pontos. O DbgSrv marcar cada porta nesse intervalo para ver se ele é gratuito. Se encontrar uma porta gratuita e nenhum erro ocorrer, o servidor de processo será criado. O cliente inteligente precisará especificar a porta real que está sendo usada para se conectar ao servidor. Para determinar a porta real, use qualquer um dos métodos descritos em Pesquisando servidores de processo; quando esse servidor de processo for exibido, a porta será seguida por dois números separados por dois-pontos. O primeiro número será a porta real usada; o segundo pode ser ignorado. Por exemplo, se a porta foi especificada como port=51:60 e a porta 53 foi realmente usada, os resultados da pesquisa mostrarão "port=53:60". (Se você estiver usando o parâmetro clicon para estabelecer uma conexão inversa, o cliente inteligente poderá especificar um intervalo de portas dessa maneira, enquanto o servidor de processo deverá especificar a porta real usada.)

clicon=Client
Quando o protocolo TCP ou SSL for usado e o parâmetro clicon for especificado, uma conexão inversa será aberta. Isso significa que o servidor de processo tentará se conectar ao cliente inteligente, em vez de permitir que o cliente inicie o contato. Isso pode ser útil se você tiver um firewall que esteja impedindo uma conexão na direção usual. O cliente especifica o nome da rede ou o endereço IP do computador no qual o cliente inteligente existe ou será criado. As duas barras iniciais (\) são opcionais.

Como o servidor de processo está procurando um cliente específico, você não poderá conectar vários clientes ao servidor se usar esse método. Se a conexão for recusada ou estiver interrompida, você precisará reiniciar o servidor de processo. Um servidor de processo de conexão reversa não aparecerá quando alguém usar a opção de linha de comando -QR para exibir todos os servidores ativos.

Nota Quando a clicon é usada, é melhor iniciar o cliente inteligente antes que o servidor de processo seja criado, embora a ordem usual (servidor antes do cliente) também seja permitida.

port=COMPort
Quando o protocolo COM é usado, COMPort especifica a porta COM a ser usada. O prefixo "COM" é opcional , por exemplo, "com2" e "2" são aceitáveis.

baud=BaudRate
Quando o protocolo COM é usado, BaudRate especifica a taxa de baud na qual a conexão será executada. Qualquer taxa de baud compatível com o hardware é permitida.

channel=COMChannel
Se o protocolo COM for usado, COMChannel especificará o canal COM a ser usado na comunicação com o cliente de depuração. Pode ser qualquer valor entre 0 e 254, inclusive. Você pode usar uma única porta COM para várias conexões usando números de canal diferentes. (Isso é diferente do uso de portas COM para um cabo de depuração – nessa situação, você não pode usar canais dentro de uma porta COM.)

proto=Protocol
Se o protocolo SSL ou SPIPE for usado, o protocolo Protocol especificará o protocolo S-Channel. Pode ser qualquer uma das cadeias de caracteres tls1, pct1, ssl2 ou ssl3.

Cert
Se o protocolo SSL ou SPIPE for usado, Cert especificará o certificado. Pode ser o nome do certificado ou a impressão digital do certificado (a cadeia de caracteres de dígitos hexadecimais fornecidos pelo snapin do certificado). Se a sintaxe certuser=Cert for usada, o depurador procurará o certificado no repositório do sistema (o repositório padrão). Se a sintaxe machuser=Cert for usada, o depurador procurará o certificado no repositório do computador. O certificado especificado deve dar suporte à autenticação de servidor.

Escondidos
Impede que o servidor de processo apareça quando alguém usa a opção de linha de comando -QR para exibir todos os servidores ativos.

password=Password
Requer que um cliente inteligente forneça a senha especificada para se conectar ao servidor de processo. A senha pode ser qualquer cadeia de caracteres alfanumérica, com até doze caracteres de comprimento.

Aviso Usar uma senha com protocolo TCP, NPIPE ou COM oferece apenas uma pequena quantidade de proteção, pois a senha não está criptografada. Quando uma senha é usada com o protocolo SSL ou SPIPE, ela é criptografada. Se você quiser estabelecer uma sessão remota segura, deverá usar o protocolo SSL ou SPIPE.

ipversion=6
(Ferramentas de depuração para Windows 6.6.07 e somente anteriores) Força o depurador a usar o IP versão 6 em vez da versão 4 ao usar o TCP para se conectar à Internet. No Windows Vista e em versões posteriores, o depurador tenta fazer o padrão automático para o IP versão 6, tornando essa opção desnecessária.

IcfEnable
Faz com que o depurador habilite as conexões de porta necessárias para comunicação TCP ou pipe nomeado quando o Firewall de Conexão com a Internet estiver ativo. Por padrão, o Firewall de Conexão com a Internet desabilita as portas usadas por esses protocolos. Quando IcfEnable é usado com uma conexão TCP, o depurador faz com que o Windows abra a porta especificada pelo parâmetro Socket . Quando IcfEnable é usado com uma conexão de pipe nomeada, o depurador faz com que o Windows abra as portas usadas para pipes nomeados (portas 139 e 445). O depurador não fecha essas portas depois que a conexão é encerrada.

-sifeoExecutable
Suspende o valor da IFEO (Opção de Execução de Arquivo de Imagem) para a imagem fornecida. Executável deve incluir o nome do arquivo da imagem executável, incluindo as extensões de nome de arquivo. A opção -sifeo permite que dbgSrv seja definido como o depurador IFEO para uma imagem criada pela opção -c , sem causar invocação recursiva devido à configuração IFEO. Essa opção só poderá ser usada se -c for usado.

-C
Faz com que o DbgSrv crie um novo processo. Você pode usar isso para criar um processo que pretende depurar. Isso é semelhante à geração de um novo processo do depurador, exceto que esse processo não será depurado quando for criado. Para depurar esse processo, determine seu PID e use a opção -p ao iniciar o cliente inteligente para depurar esse processo.

s
Faz com que o processo recém-criado seja suspenso imediatamente. Se você estiver usando essa opção, é recomendável usar o CDB como seu cliente inteligente e iniciar o cliente inteligente com a opção de linha de comando -pb , em conjunto com -p PID. Se você incluir a opção -pb na linha de comando, o processo será retomado quando o depurador for anexado a ele; caso contrário, você poderá retomar o processo com o comando ~*m .

AppCmdLine
Especifica a linha de comando completa do processo a ser criado. AppCmdLine pode ser uma cadeia de caracteres Unicode ou ASCII e pode incluir qualquer caractere imprimível. Todo o texto exibido após o parâmetro -c[s] será usado para formar a cadeia de caracteres AppCmdLine.

-X
Faz com que o restante da linha de comando seja ignorado. Essa opção será útil se você estiver iniciando o DbgSrv de um aplicativo que pode acrescentar texto indesejado à linha de comando.

-Pc
Faz com que o restante da linha de comando seja ignorado. Essa opção será útil se você estiver iniciando o DbgSrv de um aplicativo que pode acrescentar texto indesejado à linha de comando. Um erro de sintaxe resultará se -pc for o elemento final na linha de comando DbgSrv. Além dessa restrição, -pc é idêntico a -x.

Você pode iniciar qualquer número de servidores de processo em um computador. No entanto, isso geralmente é desnecessário, pois um servidor de processo pode ser usado por qualquer número de clientes inteligentes (cada um envolvido em uma sessão de depuração diferente).