Attivazione di un server di elaborazione
Il server di elaborazione incluso in Strumenti di debug per Windows è denominato DbgSrv (dbgsrv.exe). Per attivare un server di elaborazione, aprire una finestra del prompt dei comandi con privilegi elevati (Esegui come amministratore) e immettere il comando dbgsrv.
Nota È possibile attivare un server di elaborazione senza disporre di privilegi elevati e i client di debug potranno connettersi al server. Tuttavia, i client non potranno individuare un server di elaborazione a meno che non sia stato attivato con privilegi elevati. Per informazioni su come individuare i server di debug, vedere Ricerca di server di elaborazione.
Importante
Quando si usa il debug remoto, è necessario tenere presenti importanti considerazioni sulla sicurezza. Per altre informazioni, incluse le informazioni sull'abilitazione della modalità protetta, vedere Security During Remote Debugging and Security Considerations for Windows Debugging Tools.
DbgSrv supporta diversi protocolli di trasporto: named pipe (NPIPE), TCP, porta COM, SPIPE (Secure Pipe) e secure sockets layer (SSL).
Metodi di connessione consigliati, con alcuni di sicurezza aggiuntivi
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]
metodi di connessione non sicuri
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]
Parametri
I parametri nei comandi precedenti hanno i valori possibili seguenti:
pipe=PipeName
Quando si usa il protocollo NPIPE o SPIPE, PipeName è una stringa che fungerà da nome della pipe. Ogni nome della pipe deve identificare un server di elaborazione univoco. Se si tenta di riutilizzare un nome di pipe, verrà visualizzato un messaggio di errore.
PipeName non deve contenere spazi o virgolette.
PipeName può includere un codice di formato printf-style, ad esempio %x o %d. Il server di elaborazione sostituirà questo valore con l'ID processo dbgSrv. Un secondo codice di questo tipo verrà sostituito con l'ID thread di DbgSrv.
Nota Potrebbe essere necessario abilitare la condivisione di file e stampanti nel computer che esegue il server di elaborazione. Nel Pannello di controllo passare a Rete e Internet > Network and Sharing Center> Impostazioni avanzate di condivisione. Selezionare Attiva condivisione file e stampanti.
port=Socket
Quando si usa il protocollo TCP o SSL, Socket è il numero di porta socket.
È anche possibile specificare un intervallo di porte separate da due punti. DbgSrv verificherà ogni porta in questo intervallo per verificare se è gratuita. Se trova una porta libera e non si verifica alcun errore, verrà creato il server di elaborazione. Il client intelligente dovrà specificare la porta effettiva utilizzata per connettersi al server. Per determinare la porta effettiva, usare uno dei metodi descritti in Ricerca di server di elaborazione; quando questo server di elaborazione viene visualizzato, la porta sarà seguita da due numeri separati da due punti. Il primo numero sarà la porta effettiva usata; il secondo può essere ignorato. Ad esempio, se la porta è stata specificata come port=51:60e la porta 53 è stata effettivamente usata, i risultati della ricerca visualizzeranno "port=53:60". Se si usa il parametro clicon per stabilire una connessione inversa, il client intelligente può specificare un intervallo di porte in questo modo, mentre il server di elaborazione deve specificare la porta effettiva usata.
clicon=Client
Quando viene usato il protocollo TCP o SSL e viene specificato il parametro clicon
Poiché il server di elaborazione cerca un client specifico, non è possibile connettere più client al server se si usa questo metodo. Se la connessione viene rifiutata o interrotta, sarà necessario riavviare il server di elaborazione. Un server di elaborazione della connessione inversa non verrà visualizzato quando un utente usa l'opzione -QR della riga di comando per visualizzare tutti i server attivi.
Nota Quando si usa clicon, è consigliabile avviare il client intelligente prima della creazione del server di elaborazione, anche se è consentito anche l'ordine consueto (server prima del client).
port= COMPort
Quando si usa il protocollo COM, COMPort specifica la porta COM da utilizzare. Il prefisso "COM" è facoltativo, ad esempio "com2" e "2" sono accettabili.
baud=BaudRate
Quando si usa il protocollo COM, BaudRate specifica la velocità baud con cui verrà eseguita la connessione. Qualsiasi velocità baud supportata dall'hardware è consentita.
channel= COMChannel
Se viene usato il protocollo COM, COMChannel specifica il canale COM da usare per comunicare con il client di debug. Può essere qualsiasi valore compreso tra 0 e 254 inclusi. È possibile usare una singola porta COM per più connessioni usando numeri di canale diversi. Questo comportamento è diverso dall'uso di porte COM per un cavo di debug, in questa situazione non è possibile usare canali all'interno di una porta COM.
Se viene usato il protocollo SSL o SPIPE, Protocol specifica il protocollo Secure Channel (S-Channel). Può trattarsi di una delle stringhe tls1, pct1, ssl2 o ssl3.
certificato
Se viene usato il protocollo SSL o SPIPE, certificato specifica il certificato. Può trattarsi del nome del certificato o dell'identificazione personale del certificato (stringa di cifre esadecimali fornite dallo snapin del certificato). Se viene usata la sintassi certuser=Cert, il debugger cercherà il certificato nell'archivio di sistema (archivio predefinito). Se viene usata la sintassi Cert, il debugger cercherà il certificato nell'archivio computer. Il certificato specificato deve supportare l'autenticazione del server.
nascosti
Impedisce la visualizzazione del server di elaborazione quando un utente usa l'opzione -QR della riga di comando per visualizzare tutti i server attivi.
password=password
Richiede un client intelligente per fornire la password specificata per connettersi al server di elaborazione.
password può essere qualsiasi stringa alfanumerica, fino a dodici caratteri di lunghezza.
Importante
L'uso di una password con protocollo TCP, NPIPE o COM offre solo una piccola quantità di protezione, perché la password non è crittografata. Quando si usa una password insieme a un protocollo SSL o SPIPE, la password viene crittografata. Se si vuole stabilire una sessione remota più sicura, è necessario usare il protocollo SSL o SPIPE.
ipversion=6
(Solo strumenti di debug per Windows 6.6.07 e versioni precedenti) Forza il debugger a usare IP versione 6 anziché la versione 4 quando si usa TCP per connettersi a Internet. In Windows Vista e versioni successive il debugger tenta di impostare automaticamente l'impostazione predefinita su IP versione 6, rendendo questa opzione non necessaria.
IcfEnable
Fa sì che il debugger abiliti le connessioni di porta necessarie per la comunicazione TCP o named pipe quando il firewall di connessione Internet è attivo. Per impostazione predefinita, il firewall di connessione Internet disabilita le porte usate da questi protocolli. Quando
-sifeoeseguibile
Sospende il valore ifEO (Image File Execution Option) per l'immagine specificata.
eseguibile deve includere il nome file dell'immagine eseguibile, incluse le estensioni del nome file. L'opzione
-c
Fa sì che DbgSrv crei un nuovo processo. È possibile usarlo per creare un processo di cui si intende eseguire il debug. È simile alla generazione di un nuovo processo dal debugger, ad eccezione del fatto che questo processo non verrà sottoposto a debug al momento della creazione. Per eseguire il debug di questo processo, determinare il relativo PID e usare l'opzione -p all'avvio del client intelligente per eseguire il debug di questo processo.
Determina la sospensione immediata del processo appena creato. Se si usa questa opzione, è consigliabile usare CDB come smart client e avviare il client intelligente con l'opzione -pb della riga di comando, in combinazione con -p PID. Se si include l'opzione
AppCmdLine
Specifica la riga di comando completa del processo da creare.
AppCmdLine può essere una stringa Unicode o ASCII e può includere qualsiasi carattere stampabile. Tutto il testo visualizzato dopo il parametro -c[s]
-x
Fa sì che il resto della riga di comando venga ignorato. Questa opzione è utile se si avvia DbgSrv da un'applicazione che potrebbe aggiungere testo indesiderato alla riga di comando.
-pc
Fa sì che il resto della riga di comando venga ignorato. Questa opzione è utile se si avvia DbgSrv da un'applicazione che potrebbe aggiungere testo indesiderato alla riga di comando. Un errore di sintassi restituisce se -pc è l'elemento finale nella riga di comando DbgSrv. A parte questa restrizione, -pc è identico a -x.
È possibile avviare un numero qualsiasi di server di elaborazione in un computer. Tuttavia, questo in genere non è necessario, poiché un server di elaborazione può essere usato da un numero qualsiasi di smart client (ognuno impegnato in una sessione di debug diversa).