Compartilhar via


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 elevada do Prompt de Comando (Executar como Administrador) e insira o comando dbgsrv .

Observação 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 Procurando por servidores de processo.

O DbgSrv oferece 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:

tubo= Nome do Tubo
Quando o protocolo NPIPE ou SPIPE é usado, o PipeName é uma cadeia de caracteres que servirá como o nome do pipe. Cada nome de pipe deve identificar um servidor de processo exclusivo. Se tentar reutilizar um nome de pipe, você receberá uma mensagem de erro. O PipeName não deve conter espaços ou aspas. PipeName pode incluir um código de formato de estilo printf, 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 do thread de DbgSrv.

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

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

É possível também especificar um intervalo de portas separadas por dois pontos. DbgSrv verificará cada porta neste intervalo para ver se ela está livre. Se encontrar uma porta livre e nenhum erro ocorrer, o servidor de processo será criado. O cliente inteligente terá que 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 Procurando por 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; a segunda pode ser ignorada. 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 reversa, o cliente inteligente poderá especificar um intervalo de portas dessa maneira, enquanto o servidor de processo deve especificar a porta real usada.)

clicon= Cliente
Quando o protocolo TCP ou SSL é usado e o parâmetro clicon é especificado, uma conexão reversa 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 conexão na direção usual. Cliente especifica o nome da rede ou endereço IP do computador no qual o cliente inteligente existe ou será criado. As duas barras invertidas iniciais (\) são opcionais.

Como o servidor de processo está procurando um cliente específico, não é possível conectar vários clientes ao servidor se você usar esse método. Se a conexão for recusada ou interrompida, você terá que 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 clicon é usado, é 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.

porta = 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= Taxa de baud
Quando o protocolo COM é usado, BaudRate especifica a taxa de transmissão em que a conexão será executada. Qualquer taxa de transmissão compatível com o hardware é permitida.

canal= COMChannel
Se o protocolo COM for usado, COMChannel especificará o canal COM a ser usado na comunicação com o cliente da depuração. Esse pode ser qualquer valor entre 0 e 254, inclusivo. 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= Protocolo
Se o protocolo SSL ou SPIPE for usado, Protocol especificará o protocolo Secure Channel (S-Channel). Pode ser qualquer cadeia 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 fornecida pelo snapin do certificado). Se a sintaxe certuser=Cert for usada, o depurador buscará o certificado no repositório do sistema (o repositório padrão). Se a sintaxe machuser=Cert for usada, o depurador buscará o certificado no armazenamento da máquina. O certificado especificado deve dar suporte à autenticação do servidor.

escondido
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.

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

Aviso O uso de uma senha com o protocolo TCP, NPIPE ou COM apenas oferece um pouco de proteção, porque a senha não é criptografada. Quando uma senha é usada com o protocolo SSL ou SPIPE, ela é criptografada. Se você deseja estabelecer uma sessão remota segura, deve usar o protocolo SSL ou SPIPE.

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

IcfHabilitar
Faz com que o depurador ative 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 conexão TCP, o depurador faz com que o Windows abra a porta especificada pelo parâmetro Socket. Quando IcfEnable é usado com conexão de pipe nomeado, 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 após a conexão ser encerrada.

-sifeo Executável
Suspende o valor da Opção de Execução de Arquivo de Imagem (IFEO) para a imagem fornecida. O 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ó pode ser usada se -c for usado.

-c
Faz com que DbgSrv crie um novo processo. Você pode usar isso para criar um processo que pretende depurar. Isso é semelhante a gerar 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 ela; 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 que aparece 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 é útil se você estiver iniciando o DbgSrv de um aplicativo que pode acrescentar texto indesejado à sua linha de comando.

-computador pessoal
Faz com que o restante da linha de comando seja ignorado. Essa opção é útil se você estiver iniciando o DbgSrv de um aplicativo que pode acrescentar texto indesejado à sua linha de comando. Um erro de sintaxe ocorrerá 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).