Is there any way to break on the next line of code

2019-04-17 21:27发布

问题:

I'm trying to track down a bug that occurs when I click a particular element on an aspx page...

In the past I've had to track down the class that handles that particular event and put a break point on the line that I think should be hit. Often it takes me several tries before I finally find the correct class....especially if the class is a user control buried somewhere...

So it's left me wondering if there is any way to get Visual Studio to break at the next line of code executed after I click an element (say a button) on an aspx page. I know there is a way to break on any exception that is thrown so I'm thinking maybe there is something similar that could help me.

If this sort of feature isn't a possibility, perhaps someone could suggest a better way for me to quickly find the class I want to debug...

回答1:

Have you tried the Debug > Break All ("pause") button? (Ctrl+Break)

It'll usually break somewhere pretty low on the stack, like at Show() for your main form in a WinForms app, but if you then Step Into to get past that, it'll often work pretty well for this sort of thing.



回答2:

Are you looking for the Step Into (F11) or Step Over (F10) ?

-- Edit

Do you also know about the Call Stack window? It can help you determine your location, and what is happening.



回答3:

Conditional Breakpoints may be your answer. You can set them were you think your code is breaking and they will only halt when the condition is satisfied.



回答4:

Debug -> Exceptions

Check thrown for the CLR Exceptions.

EDIT

The odds are you are having a CLR exception. Using this method the debugger will always break when an exception occurs. This is very convenient compared to reading the stack trace.



回答5:

Some ideas:

  • If you use a consistent naming convention for your event handlers then it should be trivial to do a global search for them all and add breakpoints. You can quickly record a macro on the first hit and then play back the macro to take all the pain out of repeating the operation many times. With a bit of practice you'll be able to breakpoint all the handlers in a few seconds flat.

  • Add an extra event handler for the event (create it early - e.g. in the constructor - so it's added before all other event handlers that your app adds, and is therefore hopefully called first) and stick a breakpoint in it. Once you've hit the breakpoint you can then single step through the other event handlers on the event.

  • write a custom event handler that handles the click and simply generates a new event. Attach all your other event handlers to this secondary event. Then you can breakpoint the first handler and step through the secondary handlers that it calls.