gpt4 book ai didi

visual-studio - Windows CRT 和断言报告(中止、重试、忽略)

转载 作者:行者123 更新时间:2023-12-04 17:28:57 27 4
gpt4 key购买 nike

Debug模式下的 Windows CRT 将显示 “中止、重试、忽略”如果应用程序遇到 assert(false)有时它会被创建多次并填满我的屏幕。

如果断言会在调试器中中断并且不问我任何问题,我会很高兴。

我修改了CRT reporting flags没有效果。

我也试过修改reporting hook .在出现 25-30 个“中止”对话框后,它会被调用。

如果有帮助,我正在构建一个由单独程序加载的 DLL。看起来加载我的 DLL 的主机程序与调用我的代码的线程不一致。
似乎其中一个线程已停止,但其他线程仍在运行。

我如何配置 CRT 来做到这一点?

最佳答案

这有效(至少对我来说,在 vs 2008 上):
(本质上,从 Hook 函数返回 TRUE)

int __cdecl CrtDbgHook(int nReportType, char* szMsg, int* pnRet)
{
return TRUE;//Return true - Abort,Retry,Ignore dialog will *not* be displayed
return FALSE;//Return false - Abort,Retry,Ignore dialog *will be displayed*
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
_CrtSetReportHook2(_CRT_RPTHOOK_INSTALL, CrtDbgHook);
assert(false);
getch();
return 1;
}

您还可以编写自己的类断言行为(请注意,这将显示“中断,继续”对话框):
#define MYASSERT(x) { if(!(x)) {DbgRaiseAssertionFailure();} }

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
MYASSERT(false);
getch();
return 1;
}

希望有帮助!

关于visual-studio - Windows CRT 和断言报告(中止、重试、忽略),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com