Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2347100
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2008-07-23 18:26:25

勾上之后, 一个副作用是, 如果你的managed代码是打开了优化的, VS中Release版默认是优化的, 那么即使代码确确实实是你自己写的, Debugger也硬说不是你写的, 照样是不能调试.

勾上之后, 还发现了一个副作用, 如果你在同时Attach 了Managed和Native两种调试目标, 那么native代码去不去了. 在Managed 代码中调用 pinvoke函数时, 按F11跟按F10一样, 直接跳过.

总之, 选与不选, 都有各自的弊病.

另外, 对于Managed代码, 虽然调试器老提示说不能evaluate一个符号原因是你的代码经过了优化, 但实际上优化过的managed代码对调试的影响是很小的, 还可以有其它的办法让CLR禁止优化, 毕竟Managed代码跟实际在CPU上执行的代码中间还隔了一层. 办法就是在Options/Debugging/General 选项页的最后面, 选上:


这个勾上之后, 挡不住那些已经被优化过的代码, JIT应该不会对同样的managed代码编译两次. 办法是在程序刚刚启动时马上断在一个对话框处, 此时系统的大部分代码应该还没有机会被JIT编译, 这时attach程序, 则后面JIT的工作就不会再做优化了, 以上在实际使用中证实可行, 但仍只是我的猜测.

阅读(2798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~