IT老混混 2016-02-07 07:17 采纳率: 60%
浏览 2912

VS编译选项Debug与Release的区别

这段代码为什么使用Release模式编译时和Debug不一样,Debug编译运行不会奔溃,Release会奔溃:
#include
#include
int main(){
CONTEXT* contex;
EXCEPTION_RECORD* exception;
__asm{
call seh
mov ecx,dword ptr ss:[esp+0xC]
mov contex,ecx
mov ecx,dword ptr ss:[esp+0x4]
mov exception,ecx
}

if (exception->ExceptionCode==EXCEPTION_BREAKPOINT)
{
contex->Eip+=1;
printf("发现一个int3断点\n");
__asm{
xor eax,eax
retn
}

}
printf("异常不是我触发的\n");
__asm{
    mov eax,1
    retn

seh:
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
}

__asm{
    int 3
}
system("pause");
return 0; 

}

  • 写回答

3条回答

  • hopease 2016-02-07 08:02
    关注

    两种模式还是有区别的,debug模式下有调试信息,内存的小范围越界有时不会表现出来;但是 release 就会容易表现出来。

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制