The !for_each_process extension executes the specified debugger command once for each process in the target.

!for_each_process ["CommandString"] 
!for_each_process -? 


Specifies the debugger commands to be executed for each process.

If CommandString includes multiple commands, separate them with semicolons (;) and enclose CommandString in quotation marks ("). If CommandString is enclosed in quotations marks, the individual commands within CommandString cannot contain quotation marks. Within CommandString, @#Process is replaced by the process address.

Displays help for this extension in the Debugger Command window.


This extension works only in kernel mode, even though it resides in Ext.dll.

Windows 2000


Windows XP and later


Additional Information

For general information about processes, see Threads and Processes. For information about manipulating or obtaining information about processes, see Controlling Processes and Threads.


If no arguments are supplied, the debugger displays a list of all processes, along with time and priority statistics. This is equivalent to entering !process @#Process 0 as the CommandString value.

To terminate execution at any point, press CTRL+BREAK (in WinDbg) or CTRL+C (in KD).

Send comments about this topic to Microsoft