hur.cn - 华软网

 热门搜索

Visaul Studio在XP上Win7上Debug时的不同。

  作者:未知    来源:网络    更新时间:2015/11/27
使用VS2008(其它版本未测试),创建一个基于对话框的mfc程序,在对话框上创建一个按钮,在按钮响应函数中输入以下代码
void CNNNNDlg::OnBnClickedButton1()//CNNNDlg即对对话框的主窗口
{
struct AA
{
int n;
int m;
};
AA *p = NULL;
p->n = 3;
p->m = 4;
}
在XP上运行上面的程序时,当点击了按钮后,直接在p->n = 3上断下来。但在Win7上,会断在莫名其妙的代码上,并且Call Stack中,也并不会有p->n = 3这一行。使用在Win7上找到问题出在哪行代码上非常困难。有什么方法让Win7系统上时,代码在p->n = 3这里断下来的设置吗?谢谢。
---华软 网友回答---
rebuild工程 然后用debug版本调试
---华软网友回复---
扯的吧:
Win7+VS2008

---华软网友回复---
调试的话用DEBUG版,RELEASE版在优化后代码可能会改变,造成这种现象
如果在DEBUG下也这样,不知是不是08本身的问题,但我相信微软应该不至于有那么低级的BUG
---华软网友回复---
win7下的堆栈调用窗口如果没有和xp下一样的,那xin7下断在了代码的什么地方(你自己的代码的什么地方)?
---华软网友回复---
AA *p = NULL;
p->n = 3;

扯淡,p就是一个非法指针,你给它成员赋值本身就是错误的,无须纠结于错误本身,将正确的逻辑做好,包括可能的错误处理
---华软网友回复---
引用 2 楼 lsq19871207 的回复:
扯的吧:
Win7+VS2008


不是我一个人有这个问题。我群里无数人有这个问题。
---华软网友回复---
引用 5 楼 worldy 的回复:
AA *p = NULL;
p->n = 3;

扯淡,p就是一个非法指针,你给它成员赋值本身就是错误的,无须纠结于错误本身,将正确的逻辑做好,包括可能的错误处理


你这理解力有问题呀。这只是个测试代码,代码本身没有任何意义。你和微软说,让他们的程序员把正确的逻辑做好,这样windows就没有bug了。有时候,不是你想犯错,而是无意犯错,我说的问题,就是在无意犯错的时候,让VS快速定位到错误的代码行上。
---华软网友回复---
这个问题我刚问完,就自己解决了,结贴。
---华软网友回复---
引用 8 楼 psbeond 的回复:
这个问题我刚问完,就自己解决了,结贴。


那你就不能把解决方案给分享一下吗?      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。