5

这是场景。我正在调试我自己的应用程序(C/C++),它使用了公司另一个团队开发的一些库。当我的代码生成一些极端情况时,断言失败。这很痛苦,因为断言没有正确制定,所以库函数工作正常,但我得到了所有这些中断,我只需要继续(很多因为它在一个循环中),所以我可以得到我真正感兴趣的东西. 由于其他原因,我在调试时必须使用调试版本的库。另一个团队在下一个版本之前不会修复这个问题(嘿,它可以在我们的机器上运行)。

我可以告诉调试器忽略这部分代码断言的断点吗(即它可以为我自动继续)。

4

4 回答 4

3

如果代码自行触发断点(通过 __debugbreak 或 int 3),则不能使用条件断点,因为 Visual Studio 根本不知道断点。但是,您可以通过修改调试器中的代码来禁用您不感兴趣的任何此类断点。可能不是您想要的,因为您需要在每个调试会话中重复此操作,但总比没有好。有关更多信息,请阅读如何禁用编程断点/断言?.

于 2008-11-20T12:27:32.603 回答
2

在调试库中没有自动忽略 ASSERT() 失败的好方法。如果这是你必须使用的,你只需要说服其他团队现在需要修复它,或者如果你有这个库的源代码,你可以自己修复或删除断言只是为了得到你的工作在此期间完成。

于 2008-11-20T12:28:11.277 回答
2

您可以在对库的调用周围添加一个异常处理程序,捕获 EXCEPTION_BREAKPOINT 异常并且什么都不做。

以下链接中的示例 2 似乎是您想要做的:

http://msdn.microsoft.com/en-us/library/ms681409(VS.85).aspx

于 2009-05-12T12:48:37.283 回答
0

您可以使用条件断点。一些链接:

http://support.microsoft.com/kb/308469
http://dotnettipoftheday.org/tips/conditional_breakpoint.aspx

于 2008-11-20T12:11:29.563 回答