首先_CrtDbgBreak是的 断言函数。
DebugBreak 与 _CrtDbgBreak 都是断言函数。
根据msdn中对DebugBreak的描述 和 (DebugBreak vs AfxDebugBreak vs _CrtDebugBreak vs __debugbreak)得知:
DebugBreak:
1,在release和debug版本下均有效
2,是一个系统调用,在做调试的时候,需要把windows的符号表加载起来一起用才可以观察到完整的异常栈,否则可能只看得到最后的那一点(帧)栈信息
_CrtDbgBreak
1,只有在debug下有效
2,函数可能在msdn上没有任何说明,类似私有api?或未写入文档的官僚函数(M$一贯的作风)?
其中在msdn的文档中提到,和DebugBreak相似的函数还有__debugbreak而,__debugbreak是不需要符号表,具体的 __debugbreak文档 并没有找到
在VS中创建一个win32工程,当使用VS/win自带的类库出现异常时,在debug版本下的断言均是_CrtDbgBreak被调用。