| 1 | = Using the Microsoft and Safari Symbol Servers = |
| 2 | Follow the [http://developer.apple.com/internet/safari/windows_symbols_agree.html instructions for using the Microsoft and Safari symbol servers] so that Visual Studio can show you backtraces that involve closed-source components. |
| 3 | |
| 4 | = Watch Window = |
| 5 | You can open any of the Watch windows using the `Debug > Windows > Watch` submenu. |
| 6 | |
| 7 | [http://msdn.microsoft.com/en-us/magazine/default.aspx MSDN Magazine] published a very useful [http://msdn.microsoft.com/en-us/magazine/dd252945.aspx article about Watch window pseudo-variables and format specifiers]. Those of particular interest to WebKit developers are mentioned explicitly below, but the whole article is worth a read. |
| 8 | |
| 9 | Adding `$err,hr` to the Watch Window will show you what `::GetLastError()` would return at this moment, and will show you both the numerical error value and the error string associated with it. |
| 10 | |
| 11 | = Immediate Window = |
| 12 | You can open the Immediate window using `Debug > Windows > Immediate` or `Ctrl+Alt+I`. |
| 13 | |
| 14 | When debugging code that uses CF types, you can invoke the `CFShow` function in the Immediate window to print a debug description of a CF object to the Output Window like so: |
| 15 | {{{ |
| 16 | {,,CoreFoundation.dll}_CFShow(0x12345678) |
| 17 | }}} |
| 18 | |
| 19 | = Debugging Multi-Process Applications = |
| 20 | You can attach a single debugger to more than one process. To do this, launch or attach to the first process, then use `Tools > Attach to Process…` or `Ctrl+Alt+P` to attach to the second process. Your breakpoints will apply to both processes. |
| 21 | |
| 22 | There are two ways to see which process the debugger is currently operating on, and to switch the current process: the Processes window and the Debug Location toolbar. You can open the Processes window using `Debug > Windows > Processes` or `Ctrl+Shift+Alt+P`. You can show the Debug Location toolbar using `View > Toolbars > Debug Location`. |
| 23 | |
| 24 | Visual Studio will always pauses all processes (i.e., you can't pause just one process). Similarly, Visual Studio will always step all processes when using the Step In/Over/Out commands. |