Debugger won't catch exceptions? Fix 0x000002B0
Windows debugger gave you error 0x000002B0? It means the debugger saw an exception but didn't handle it. Here's how to fix it, from quick to deep.
What is 0x000002B0?
This error shows up when you're debugging an application — usually in Visual Studio, WinDbg, or a similar debugger — and an exception occurs that the debugger itself isn't set up to catch. The debugger saw it, but didn't have a handler configured. The result? Your app crashes or halts with this error code. I've seen this most often with C++ apps using structured exception handling (SEH) and with .NET apps that throw unhandled exceptions during debugging sessions.
The good news: it's almost never a hardware problem. It's a configuration or code issue. Let's walk through fixes, starting with the quickest.
Fix #1: Quick Check — Restart and Disable First-Chance Exceptions
Time: 30 seconds
First, the simple stuff. Close your debugger and all running instances of the app you're debugging. Then reopen the debugger. Yes, I know it sounds basic. But about 30% of the time, this error is a transient state where the debugger got confused after a previous session.
Still getting the error? In Visual Studio, go to Debug > Windows > Exception Settings. Find the exception type that's causing the problem (usually "C++ Exceptions" or "Common Language Runtime Exceptions"). Uncheck the box next to it. This tells the debugger to ignore first-chance exceptions — it won't break on them, but the app can still handle them. After unchecking, press F5 to continue. If that works, you're done. If not, move on.
Fix #2: Moderate Fix — Adjust Exception Handling Settings
Time: 5 minutes
Sometimes the debugger is set to break on all exceptions, including ones your code handles correctly. That causes this error when the debugger itself can't handle the exception type. Here's the fix.
In Visual Studio: go to Debug > Options > Debugging > General. Look for the checkbox "Enable Just My Code". Make sure it's checked. This filters out system exceptions. Also check "Break when exceptions cross AppDomain or managed/native boundaries" — uncheck it. This stops the debugger from breaking on exceptions that cross between managed and native code, which is a common trigger for 0x000002B0.
In WinDbg: the equivalent is to run the command .ignore_first_chance 1 in the command window. That tells WinDbg to only stop on second-chance exceptions (the ones that actually crash the app).
After making these changes, restart your debugging session. If the error still appears, the issue might be with your symbol files.
Fix #3: Advanced Fix — Load Correct Symbols
Time: 15+ minutes
This is the one that often fixes it when nothing else does. The debugger needs the right symbol files (.pdb) to map exception addresses to function names. If symbols are missing or wrong, the debugger can't handle the exception — boom, 0x000002B0.
First, check your symbol path. In Visual Studio, go to Tools > Options > Debugging > Symbols. Under Symbol file (.pdb) locations, make sure the Microsoft Symbol Servers are listed. Add SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols if it's not there. Then click Empty Symbol Cache to clear any stale files.
In WinDbg, use the command:
.symfix C:\Symbols
.reload /f
The first line sets the symbol path to the Microsoft symbol server. The second forces a full reload of all symbols. This can take a few minutes depending on your internet speed.
Now, reproduce the error. Look at the call stack in your debugger. If you see function names like ntdll!NtWaitForSingleObject or kernel32!BaseThreadInitThunk, your symbols are loading correctly. If you see hex addresses like 0x7ffe0304, symbols are missing — double-check your path.
If you're debugging a third-party DLL (like a graphics driver or audio codec), you might need symbols from their site. Sometimes they don't provide public symbols. In that case, you can't do much except contact the vendor. But for your own code, this fix works.
Still stuck? Two More Things to Try
1. Check for corrupted .pdb files — Delete your local symbol cache (the folder you set in step 3) and rebuild your project with Build > Rebuild Solution. This forces fresh symbol generation.
2. Use a different debugger temporarily — I've seen cases where Visual Studio's debugger gets stuck on a specific exception type, but WinDbg handles it fine. Install WinDbg from the Windows SDK and attach it to your process with WinDbg -p [PID]. If the error doesn't appear there, it's a Visual Studio-specific bug — try repairing Visual Studio from the installer.
One last tip: if you're using structured exception handling (__try/__except blocks) in C++, make sure your exception filter actually returns EXCEPTION_EXECUTE_HANDLER. If it returns EXCEPTION_CONTINUE_SEARCH, the debugger sees that as "not handled" even if you intended to handle it. Check your filter expression.
Was this solution helpful?