开发者

Getting first chance exceptions stop my app

When an exception is thrown in my app, I expect the debugger to stop running and enter debugging mode, but it does not. Instead, I just get a message in the Immediate Window ('A first chance exception ...'), and the program keeps on running like if nothing happened. However, the sub (in which the exception was thrown) is exited, so statements after the exception are not executed. Sin开发者_运维技巧ce this sub makes the initialization of my program, running becomes very unstable.

How can I tell the debugger to stop execution when an exception is thrown?

(I use VB 2010, and did not change any setting of the debugger.)

UPDATE:

Thanks for the quick answer. Unfortunately, I still can't get it the way I'd like.

  1. On the 'Advenced compile options' page I don't have 'Target CPU'. Maybe it's that I have only VB Express?
  2. If I tick the 'Thrown' checkbox in Debug > Exceptions, execution stops even if I have a catch for that exception, and I don't want that.

Until now I used VB 2008 on 32 bit, and everything worked fine, but since I moved to 2010 64 bit I just can't get it right. Any suggestions?


Debug + Exceptions, tick the Thrown checkbox for "Common Language Runtime Exceptions". The debugger will now stop on the first chance notification.

The usual cause is a catch statement in your code, maybe the VB.NET On Error statement. Or a bug in the 64-bit debugger's interaction with Windows Forms. After it breaks, use Debug + Windows + Call stack and check if the form's Load event handler is on the call stack. The bug causes unhandled exceptions to be swallowed without a diagnostic.

To work around that, use Project + Properties, Compile tab, scroll down, Advanced Compile Options. Change the Target CPU setting to "x86". This is the default setting for VS2010 projects btw. You'll now use the 32-bit debugger, it doesn't have this problem. And you can use Edit + Continue.


I know this is an old thread but I hope it may help others..

I was facing a very similar problem at startup of my forms. I put my code in "shown event", instead of "load event" and it is SOLVED ! I mean I get exceptions as expected, and my codes do not exit silently.

I know they are different events but for me it didn't make any change.

BTW, my env: VB.net Express 2010 on Win7 64 bit


To get the Target CPU option you must have expert settings selected in VS2010 express. Go to Tool|Options and check expert settings.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜