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 就会容易表现出来。

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题