今天 在原来的程序基础上添加了2个函数  编译通过 
使用的工程配置  Debug    平台 win32 
当前代码行数达到6000行以上
但是 调试时 程序跳转出错  
代码
如下 
 
/////[1]
/////[2]
/////[3]
/////[4]
/////[5]
/////[6]
void GetRollText()
{
char szBuf[512] = {0};
TYX_LOGON_REQ req = {0};
char szUrl[1024] = {0};
TYX_Parse_init(".");
strcpy(req.szUser,"123");
strcpy(req.szPwd,"123");
strcpy(req.szUUID,"012301312312");
int ret = TYX_Logon_CombStr(&req,szBuf);
int len = strlen(szBuf);
sprintf(szUrl, "%s:%d%s", "218.25.171.140", 8081, "/webauthor/jsp/author.action");
NTC_HttpUpLoadData(szUrl, szBuf, len, RollText_Login);
}
在其他函数代码里调用GetRollText()
 这时神奇的事情发生了   
 指向当前执行代码的指针  竟然指向了第[1]行  
 单步执行顺序执行到第[5]行   返回调用改函数的位置的下一行  
我看了调试时监视部分  发现函数内部的指令有正确执行   但是指向当前执行代码的指针 为何乱指?(莫名其妙)其实 在代码中该函数前面本来没有多行//////      是另一函数的结尾以及空行 
 但是情况类似  大致 情况就是 跳转到该函数时  指向当前执行代码的指针  总是指向函数的上几行   
但是不确定是前面几行? 想问问 各位大大  谁曾经遇到过这种情况  如何纠正  求解啊!!!!

解决方案 »

  1.   

    就我知道的这种现象的原因,是由于代码修改后没有被重新编译造成的。代码修改后是否重新编译,这要看工程是否知道你的修改。比如你用文本文件打开代码,修改后,工程是不知道的,就不会重新编译,调试时就会出现乱指的现象。所以你尝试一下rebuild all吧
      

  2.   

    rebuild all 顺便看看是否有文件丢失
      

  3.   

     使用VC 自带的高级另存为功能,文件— 文件菜单— 高级另存为--(行尾选择windows CR LF)试试,我觉得是你的文本格式被破坏了
      

  4.   

    检查一下,调试的不是Release版吧?
      

  5.   

     按照5楼的方法改了下 还是不行噢 
    我自己也尝试了 装了VS2008的补丁  也是不行  真是头大啊
    {
    if(RollText_Data == nTaskId)
    {
    if(TRANS_RESULT_SUCCESS == nStatus)
    {
    TYX_DYN_TEXT_REP *pInfo;
    //  int nInfoCount;
    int len;
    WCHAR result[MAX_PATH];
    // TYX_DynText_Parse(pData, nDataLen, &pInfo, &nInfoCount);
    len = MultiByteToWideChar(CP_UTF8, 0, pInfo->pUtf8Text, -1, NULL, 0);
    MultiByteToWideChar(CP_UTF8, 0, pInfo->pUtf8Text, -1, result, len); }
    }
    }上一函数体确定是Debug版
     
      

  6.   

    你把所有的文件都另存下,然后rebuild all下,祝你好运了。。纠结,我以前用VC2005的时候也碰到过
      

  7.   

    把debug文件夹下文件全部删除,试试看!
      

  8.   

    rebuild all也不行的话,我就更不怎么行了!顶上去吧...........
      

  9.   

     忽然发现朋友使用的vs2008英文版编译我的工程没问题 
     莫非是中文版的bug
      试装英文版中。。
      

  10.   

    终于解决了  本来装了英文版还是不行的
     最好把朋友编译后的工程再拿回来 自己编译 竟然可以了  
    悲剧啊  莫非 rebuild all  其实并没有真正重编译 
     不管了 问题暂时解决  虽然没找到根本原因  希望不会再出现
     谨此结贴!