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 do Prompt de Comando com privilégios elevados (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 Pesquisando servidores de processo.

Importante

Há considerações de segurança importantes ao usar a depuração remota. Para obter mais informações, incluindo informações sobre como habilitar o modo seguro, consulte Segurança durante de depuração remota e considerações de segurança para ferramentas de depuração do Windows.

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

métodos de conexão recomendados, com alguns de segurança adicionais

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] 

métodos de conexão não seguros

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 npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] [[-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] 

Parâmetros

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 deestilo numérico, como %x ou %d. O servidor de processo substituirá isso pela ID do processo do DbgSrv. Um segundo código desse tipo será substituído pela ID do thread do 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 > Rede e Centro de Compartilhamento> Configurações avançadas de compartilhamento. Selecione Ativarde compartilhamento de arquivo e impressora.

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

Também é possível especificar um intervalo de portas separadas por dois-pontos. O DbgSrv verificará cada porta nesse intervalo para ver se ela é gratuita. Se encontrar uma porta gratuita 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 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 porta=51:60e 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 é usado e o parâmetro clicon é 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. 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 pode 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 será exibido quando alguém usar a opção -QR linha de comando para exibir todos os servidores ativos.

Observação 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= 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. Isso 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= de Protocolo
Se o protocolo SSL ou SPIPE for usado, Protocol especificar o protocolo S-Channel (Canal Seguro). Isso 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. Isso pode ser o nome do certificado ou a impressão digital do certificado (a cadeia de caracteres de dígitos hexadecimal 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 de máquinas. O certificado especificado deve dar suporte à autenticação do servidor.

oculto
Impede que o servidor de processo apareça quando alguém usa a opção -QR linha de comando 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. de senha pode ser qualquer cadeia de caracteres alfanumérica, com até doze caracteres de comprimento.

Importante

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 você usa uma senha junto com um protocolo SSL ou SPIPE, a senha é criptografada. Se você quiser estabelecer uma sessão remota mais 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 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 a comunicação de pipe TCP ou nomeada quando o Firewall de Conexão da 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 soquete . 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 após o término da conexão.

-sifeoexecutável
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 usá-lo para criar um processo que pretende depurar. Isso é semelhante à geração de um novo processo do depurador, exceto pelo fato de que esse processo não será depurado quando ele for criado. Para depurar esse processo, determine seu PID e use a opção -p ao iniciar o cliente inteligente para depurar esse processo.

do
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 é 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, já que 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).