首页
社区
课程
招聘
[旧帖] [求助]VS2008中try{}catch(){}无效如何解决? 0.00雪花
发表于: 2011-11-29 14:15 1680

[旧帖] [求助]VS2008中try{}catch(){}无效如何解决? 0.00雪花

2011-11-29 14:15
1680
在网上查相关资料,说是修改代码生成的C++异常选项,如下图:

有的说需要设置为/EHa,有的说/EHsc 或 /EHa都可以。
不过我试了一下,都不可以。__try{}__except(1){}是可以的。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
用OD打开各PE文件,关于try catch生成的代码,有如下图所示:
VS6:


VS2008设置/EHsc:


其中有三个比较特殊的地方需要说明一下。
1、用VS6生成的try catch结构,使用了常规的线程SEH三段式回调函数注册方法:
       push CallBackAddr
           push fs:[0]
           mov  fs:[0],esp (这句在VS2008生成的代码中没有,很疑惑!后面有几句感觉是其变
                         形,还没确认。)

2、VS6压入的回调地址 PUSH Back_Doo.004054F0 可以跳转到对应的代码
   VS2008压入的回调地址 PUSH Back_Doo.00408680 对应的代码无法跳转到
   怀疑是VS2008对应的异常处理代码没有被加载。(红色框所示)

3、VS6生成的PE注释部分有识别出SEH,而VS2008的没有(绿色框所示,这一点个人觉得
   无关重要)
上传的附件:
2011-11-29 16:16
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
跳到对应的地址下面查看,对应的代码都加载了,
不过相关代码还没看懂。看晕掉了。

功力还不够啊,要继续修炼
2011-11-29 18:01
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
4
楼主一个人自言自语
2011-11-29 18:06
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
实际上我只是想知道VS2008中异常为什么catch不到
2011-11-29 21:08
0
游客
登录 | 注册 方可回帖
返回
//