MFC中出现“_debugger_hook_dummy = 0”
时间: 2023-06-17 20:08:42 浏览: 58
这个问题一般出现在使用 Visual Studio 2015 及以上版本编译 MFC 项目时。这是由于在这些版本的编译器中,引入了一个名为“VTGuard”的新特性,用于检测虚函数表(virtual function table)的一些错误。
要解决这个问题,可以在项目的属性设置中添加以下代码:
```c++
#ifndef _DEBUG
extern "C" { int _debugger_hook_dummy = 0; }
#endif
```
这个代码的作用是在 Release 模式下定义一个名为“_debugger_hook_dummy”的变量,并将其初始化为 0。这样可以绕过编译器对 VTGuard 的检测,避免出现错误。在 Debug 模式下不需要添加这段代码,因为编译器会自动定义该变量。
相关问题
_CRT_DEBUGGER_HOOK
_CRT_DEBUGGER_HOOK是一个宏定义,用于在调试器中处理内存错误的回调函数。在你提供的引用中,它出现在gs_report.c文件的298行位置。这个宏定义可能与你的程序在Release模式下出现内存溢出导致崩溃的问题有关。然而,根据提供的引用内容,无法得出更具体的结论。你可能需要进一步检查你的代码和调试器输出来解决这个问题。
#### 引用[.reference_title]
- *1* *3* [VC内存溢出一例 –- 调用约定不一致 (_CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILUR](https://blog.csdn.net/weixin_39640543/article/details/111519905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [VC内存溢出一例 –- 调用约定不一致 (_CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE)](https://blog.csdn.net/jiangxinyu/article/details/7844414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
CONFIG_FIQ_DEBUGGER_CONSOLE=y
这是一个Linux内核配置选项,启用此选项可以为FIQ调试器提供控制台支持。FIQ(Fast Interrupt Request)是一种高速中断请求,它可以在处理器执行其他任务时提供低延迟的硬件响应。FIQ调试器是一种用于调试Linux内核的工具,可以在系统运行时捕获FIQ中断并执行调试操作。启用此选项可以为FIQ调试器提供一个控制台,方便用户进行调试操作。